๋ฌธ์
n(2 ≤ n ≤ 100)๊ฐ์ ๋์๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ ํ ๋์์์ ์ถ๋ฐํ์ฌ ๋ค๋ฅธ ๋์์ ๋์ฐฉํ๋ m(1 ≤ m ≤ 100,000)๊ฐ์ ๋ฒ์ค๊ฐ ์๋ค. ๊ฐ ๋ฒ์ค๋ ํ ๋ฒ ์ฌ์ฉํ ๋ ํ์ํ ๋น์ฉ์ด ์๋ค.
๋ชจ๋ ๋์์ ์ (A, B)์ ๋ํด์ ๋์ A์์ B๋ก ๊ฐ๋๋ฐ ํ์ํ ๋น์ฉ์ ์ต์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋์์ ๊ฐ์ n์ด ์ฃผ์ด์ง๊ณ ๋์งธ ์ค์๋ ๋ฒ์ค์ ๊ฐ์ m์ด ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์
์งธ ์ค๋ถํฐ m+2์ค๊น์ง ๋ค์๊ณผ ๊ฐ์ ๋ฒ์ค์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๋จผ์ ์ฒ์์๋ ๊ทธ ๋ฒ์ค์ ์ถ๋ฐ ๋์์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ๋ฒ์ค์ ์ ๋ณด๋ ๋ฒ์ค์ ์์ ๋์ a, ๋์ฐฉ ๋์ b, ํ ๋ฒ ํ๋๋ฐ ํ์ํ ๋น์ฉ c๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์์ ๋์์ ๋์ฐฉ ๋์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ ์๋ค. ๋น์ฉ์ 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์์ ๋์์ ๋์ฐฉ ๋์๋ฅผ ์ฐ๊ฒฐํ๋ ๋
ธ์ ์ ํ๋๊ฐ ์๋ ์ ์๋ค.
์์ ์ ๋ ฅ 1
5
14
1 2 2
1 3 3
1 4 1
1 5 10
2 4 2
3 4 1
3 5 1
4 5 3
3 5 10
3 1 8
1 4 2
5 1 7
3 4 2
5 2 4
์์ ์ถ๋ ฅ 1
0 2 3 1 4
12 0 15 2 5
8 5 0 1 1
10 7 13 0 3
7 4 10 6 0
ํด๊ฒฐ ๋ฐฉ๋ฒ
ํ๋ก์ด๋ - ์์ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํด๊ฒฐํ๋ ๋ฌธ์ ์ด๋ค.
ํ๋ก์ด๋ - ์์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๋ ธ๋์ ๋ํด์ ๋ค๋ฅธ ๋ ธ๋๋ก์ ์ต์ ๊ฒฝ๋ก ๊ฐ์ ๊ตฌํ ์ ์๋ค.
[์๊ณ ๋ฆฌ์ฆ] ํ๋ก์ด๋ ์์ ์๊ณ ๋ฆฌ์ฆ (Floyd - Warshall Algorithm)
ํ๋ก์ด๋ ์์ ์๊ณ ๋ฆฌ์ฆ (Floyd - Warshall Algorithm)Floyd - Warshall Algorithm์ ๊ทธ๋ํ์์ ๊ฐ๋ฅํ ๋ชจ๋ ์์ ๋ํด ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ์์ ๊ฐ์ ๋ค์ ๋ํด์ ํ๋์
yobi-devlog.tistory.com
import sys
INF = int(1e9)
n = int(input())
m = int(input())
graph = [[INF]*(n+1) for _ in range(n+1)]
for a in range(1,n+1):
for b in range(1,n+1):
if a == b:
graph[a][b] = 0
for _ in range(m):
a,b,c = map(int, sys.stdin.readline().rstrip().split())
graph[a][b] = min(graph[a][b], c)
for k in range(1,n+1):
for a in range(1,n+1):
for b in range(1,n+1):
graph[a][b] = min(graph[a][b], graph[a][k] + graph[k][b])
for i in range(1, n+1):
for j in range(1, n+1):
print(graph[i][j] if graph[i][j] is not INF else 0, end = " ")
print()
'๐์ฝ๋ฉํ ์คํธ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2206 - ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ (Python) (0) | 2024.08.21 |
---|---|
[๋ฐฑ์ค] 9663 - N Queen (Python) (0) | 2024.08.20 |
[๋ฐฑ์ค] 1916 - ์ต์ ๋น์ฉ ๊ตฌํ๊ธฐ (Python) (0) | 2024.08.19 |
[๋ฐฑ์ค] 1504- ํน์ ํ ์ต๋จ ๊ฒฝ๋ก (Python) (0) | 2024.08.19 |
[๋ฐฑ์ค] 11779 - ์ต์ ๋น์ฉ ๊ตฌํ๊ธฐ 2 (Python) (0) | 2024.08.19 |