https://www.acmicpc.net/problem/11403
11403๋ฒ: ๊ฒฝ๋ก ์ฐพ๊ธฐ
๊ฐ์ค์น ์๋ ๋ฐฉํฅ ๊ทธ๋ํ G๊ฐ ์ฃผ์ด์ก์ ๋, ๋ชจ๋ ์ ์ (i, j)์ ๋ํด์, i์์ j๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์๋์ง ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
www.acmicpc.net
์์ด๋์ด
1. ํ๋ก์ด๋ ์์ฌ
- ์์ ์ ๊ฐ์ค์น๊ฐ ์๋ ํ๋ก์ด๋ ์์ฌ์ ํผ ๊ฒฝํ์ด ์์ด์ ์ด๋ฒ์๋ ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ๋ค.
- ๊ธฐ์กด ์๊ณ ๋ฆฌ์ฆ์์ ์ฝ๊ฐ๋ง ๋ณํํ๋ฉด ๋จ
์ฝ๋ ์ค๋ช
for k in range(N):
for i in range(N):
for j in range(N):
if adj_matrix[i][k] == 1 and adj_matrix[k][j] == 1:
adj_matrix[i][j] = 1
k๋ ๊ฑฐ์ณ๊ฐ๋ ๋ ธ๋, i๋ ์์ ๋ ธ๋, j๋ ๋์ฐฉ ๋ ธ๋ ์์ผ๋ก ๋ฐ๋ณต๋ฌธ์ ์์ฑํ๊ณ ,
i -> k์ k -> j๊ฐ ์กด์ฌํ๋ฉด i -> j๋ก ์ด์ด์ฃผ๋ ์์ ์ ํ๋ฉด ๋๋ค.
์ฝ๋๋ ๊ฐ๋จํ์ง๋ง ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ์์ ์ผ์ค for๋ฌธ์ ์์๋ ์ค์ํ๋ค.
์๋ฅผ ๋ค์ด 1 -> 3 -> 2 -> 5 ์ฐ๊ฒฐ๋์ด์๋ค๊ณ ์๊ฐํด๋ณด์.
๊ฑฐ์ณ๊ฐ๋ ๋ ธ๋(k)๊ฐ ๊ฐ์ฅ ๋ฐ๊นฅ์ ์์ผ๋ฉด
k = 2 ์ผ ๋ 3 -> 2 -> 5๋ฅผ ์ด์ด์ 3 -> 5๋ก ์ฐ๊ฒฐํ๊ณ
k = 3 ์ผ ๋ 1 -> 3 -> 5๋ฅผ ์ด์ด์ 1 -> 5๋ฅผ ์ฐ๊ฒฐํด์ค๋ค.
๊ทธ๋ผ ์์ ๋ ธ๋(i)๊ฐ ๋ฐ๊นฅ์ ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
๋จผ์ i = 1 ์ผ ๋ 1 -> 2, 2-> 5๋ฅผ ๋จผ์ ๊ฒ์ฌํ๋๊น ์ฐ๊ฒฐ์ด ์ ๋ ์ํ๋ก ๋์ด๊ฐ๋ค.
์ดํ 1 -> 3, 3 -> 2 ๊ฒ์ฌ๋ฅผ ํ๋ฉด ์ด์ด์ง๋๊น 1->2๋ก ์ฐ๊ฒฐ๋๋ค.
์ฌ๊ธฐ์ ๋ค์ 1 -> 2์ 2-> 5๋ฅผ ๊ฒ์ฌํ ์ ์๋ค. ์๋, ์ด๋ฏธ ๋ฐ๋ณต๋ฌธ์์ ์ง๋๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ๋ค์ ์ฐ๊ฒฐ ๊ฒ์ฌ ์ ํด์ค.
๋ง๋ก ํ์ด์ ์๊ฐํด๋ณด๋ฉด ์์์ด๋ ๋์ ๊ธฐ์ค์ผ๋ก ๋จผ์ ์ฐ๊ฒฐํ๋ ๊ฒ ์๋๊ณ
์ค๊ฐ๋ค๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ์ฐ๊ฒฐํด๋ฌ์ผ ๋์ค์ ๋ฐ๋ค๋ฅ ์ฐ๊ฒฐ์ด ๋๋ค.
์ ์ฒด ์ฝ๋
import sys
N = int(input())
adj_matrix = []
for _ in range(N):
adj_matrix.append([int(x) for x in sys.stdin.readline().rstrip().split()])
for k in range(N):
for i in range(N):
for j in range(N):
if adj_matrix[i][k] == 1 and adj_matrix[k][j] == 1:
adj_matrix[i][j] = 1
for row in adj_matrix:
print(' '.join(map(str,row)))
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2467 ์ฉ์ก (python ํ์ด์ฌ) (0) | 2022.07.09 |
---|---|
[๋ฐฑ์ค] 6064 ์นด์ ๋ฌ๋ ฅ (python ํ์ด์ฌ) (0) | 2022.07.06 |
[๋ฐฑ์ค] 16236 ์๊ธฐ ์์ด (python ํ์ด์ฌ) (0) | 2022.07.05 |
[๋ฐฑ์ค] 17626 Four Squares (python ํ์ด์ฌ) (0) | 2022.07.05 |
[๋ฐฑ์ค] 2293 ๋์ 1 (python ํ์ด์ฌ) (1) | 2022.07.05 |