백준비단뱀 11404호: 플로이드

https://www.acmicpc.net/problem/11404


import sys

sys.stdin = open('C:/Users/USER/Desktop/vs/py/py1/input.txt', 'r')


def input():
    return sys.stdin.readline().strip()

# ==================================================================================


INF = float('inf')  # 충분히 큰 수

city_num = int(input())  # 도시(정점) 수
bus_num = int(input())  # 버스(간선) 수

bus_list = ((INF for __ in range(city_num+1)) for _ in range(city_num+1))

for i in range(1, city_num+1):
    bus_list(i)(i) = 0

for _ in range(bus_num):  # 버스 정보 입력
    st, ed, cost = map(int, input().split())
    bus_list(st)(ed) = min(cost, bus_list(st)(ed))


for i in range(1, city_num+1):  # 플로이드
    for a in range(1, city_num+1):
        for b in range(1, city_num+1):
            bus_list(a)(b) = min(bus_list(a)(b), bus_list(a)(i)+bus_list(i)(b))

for i in range(1, city_num+1):  # 출력
    for j in range(1, city_num+1):
        num = bus_list(i)(j)
        if num == INF:
            num = 0
        print(num, end=' ')
    print()

그냥 플로이드의 알고리즘