CS/Python

파이썬으로 플로이드-워셜 알고리즘 구현하기

munsik22 2025. 4. 1. 13:41
n, m = 5, 14
inf = float("inf")
dist = [[],
        [inf, 0, 2, 3, 1, 10],
        [inf, inf, 0, inf, 2, inf],
        [inf, 8, inf, 0, 1, 1],
        [inf, inf, inf, inf, 0, 3],
        [inf, 7, 4, inf, inf, 0]
        ]

for k in range(1, n+1):
    for i in range(1, n+1):
        for j in range(1, n+1):
            if dist[i][j] > dist[i][k] + dist[k][j]:
                dist[i][j] = dist[i][k] + dist[k][j]

for i in range(1, n+1):
    for j in range(1, n+1):
        if dist[i][j] == float("inf"):
            dist[i][j] = 0
    print(*dist[i][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