백준 11404 플로이드

김민영·2023년 2월 8일
0

알고리즘

목록 보기
112/125

과정

  • 플로이드 워셜
  • 결과 그래프를 그대로 출력한다.

주의사항

  • 경로가 여러 개가 있을 수 있다.
  • 경로가 없는 경우 0을 출력한다.
import sys

sys.stdin = open("input.txt")

INF = 1e9

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

input = sys.stdin.readline

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

# 자기 자신에게 가는 것은 0
for i in range(n):
    dp[i][i] = 0

# 입력값 반영
for _ in range(m):
    a, b, c = map(int, input().split())
    dp[a - 1][b - 1] = min(dp[a - 1][b - 1], c)

# 플로이드 워셜
for k in range(n):
    for a in range(n):
        for b in range(n):
            dp[a][b] = min(dp[a][b], dp[a][k] + dp[k][b])

# 경로 없는 경우
for a in range(n):
    for b in range(n):
        if dp[a][b] >= INF:
            dp[a][b] = 0

for i in dp:
    print(*i)
profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글