[백준 11404 파이썬] 플로이드

일단 해볼게·2022년 12월 29일
0

백준

목록 보기
95/132

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

# 플로이드

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

n = int(input().rstrip()) # 도시의 개수
m = int(input().rstrip()) # 버스의 개수

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

for i in range(1, n + 1): # 자기자신으로 가는 비용 0으로 초기화
    for j in range(1, n + 1):
        if i == j:
            graph[i][j] = 0

for _ in range(m):
    a, b, c = map(int, sys.stdin.readline().split()) # 시작도시, 도착 도시, 비용
    graph[a][b] = min(c, graph[a][b])   # 노선이 하나가 아닐 수 있음 > 최소값 넣기 

# 플로이드 워셜
for k in range(1, n + 1):
    for i in range(1, n + 1):
        for j in range(1, n + 1):
            graph[i][j] = min(graph[i][j], graph[i][k] + graph[k][j])

for a in range(1, n + 1):
    for b in range(1, n + 1):
        if graph[a][b] == INF:
            print("0",  end=" ")
        else:
            print(graph[a][b], end=" ")
    print()
profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글