practivceAlgorithm/백준

[백준][Python] 1719 택배 : 플로이드워셜 경로

findTheValue 2021. 9. 4. 00:17

결국 플로이드 워셜은 어떤 경로를 통해 움직이는가?

갱신은 어떤식으로 가능한가?

결국 최초의 움직임은 직접 간선으로부터 나온다.

 

import sys
input = sys.stdin.readline

n, m = map(int, input().split())
dists = [[float('inf') for _ in range(n)] for _ in range(n)]
pre_node = [[0 for _ in range(n)] for _ in range(n)]
for _ in range(m):
    a, b, c = map(int, input().split())
    dists[a-1][b-1] = min(dists[a-1][b-1],c)
    dists[b-1][a-1] = min(dists[b-1][a-1],c)
    pre_node[a-1][b-1] = b
    pre_node[b-1][a-1] = a


for k in range(n):
    for i in range(n):
        for j in range(n):
            if dists[i][j] > dists[i][k] + dists[k][j]:
                dists[i][j] = dists[i][k] + dists[k][j]
                pre_node[i][j] = pre_node[i][k]

for i in range(n):
    pre_node[i][i] = '-'
for row in pre_node:
    print(*row)

'practivceAlgorithm > 백준' 카테고리의 다른 글

[백준][Python] 2644 촌수계산  (0) 2021.09.04
[백준][Python] 4396 지뢰찾기  (0) 2021.09.04
[백준][Python] 2002 추월  (0) 2021.09.03
[백준][Python] 21966 (중략)  (0) 2021.09.03
[백준][Python] 5430 AC  (0) 2021.09.03