백준 11404 - 플로이드 (파이썬)

Updated:

Answer

from sys import stdin

input = stdin.readline
INF = int(1e9)

def floyd_warshall():
    for m in range(1, n + 1):
        for s in range(1, n + 1):
            for e in range(1, n + 1):
                if s == e:
                    dp[s][e] = 0
                else:
                    dp[s][e] = min(dp[s][e], dp[s][m] + dp[m][e])

n = int(input())
m = int(input())

dp = [[INF] * (n + 1) for _ in range(n + 1)]

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

floyd_warshall()

for i in dp[1:]:
    for j in i[1:]:
        if j == INF:
            print(0, end = ' ')
        else:
            print(j, end = ' ')
    print()

Categories:

Updated: