practivceAlgorithm/백준

[백준][Python] 11404 플로이드

findTheValue 2021. 12. 19. 10:01

플로이드 워셜 기본문제

각 기점에 대해 모든 경로를 전수조사한다. 한번당 기점 하나를 거치는 경로이다.

 

import sys
input = sys.stdin.readline

n, m = int(input()), int(input())
bus_datas = [[float('inf')] * n for _ in range(n)]

for _ in range(m):
    a, b, c = map(int, input().split())
    bus_datas[a - 1][b - 1] = min(bus_datas[a - 1][b - 1], c)


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

for i in range(n):
    for j in range(n):
        if bus_datas[i][j] == float('inf'):
            bus_datas[i][j] = 0

for row in bus_datas:
    print(*row)