플로이드 워셜 기본문제
각 기점에 대해 모든 경로를 전수조사한다. 한번당 기점 하나를 거치는 경로이다.
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)
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 2003 수들의 합2 (0) | 2022.01.13 |
---|---|
[백준][Python] 11444 피보나치수6 - 행렬의 곱셈 (0) | 2021.12.19 |
[백준][Python] 2263 트리의 순회 (0) | 2021.12.15 |
[백준][Python] 9251 LCS (0) | 2021.12.15 |
[백준][Python] 16953 A -> B (0) | 2021.12.07 |