1223v

[BOJ] Python 플로이드(11404) 본문

PS

[BOJ] Python 플로이드(11404)

1223v 2025. 2. 18. 15:11

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

 

 

대표적인 플로이드 워셜 문제이다. 

모든 경로에서의 최단경로를 출력하는 문제이다.

 

3중 for 문을 통해 값을 최신화 한다.

 

import sys
input = sys.stdin.readline

N = int(input())
M = int(input())
graph = [[] for _ in range(N+1)]
distance = [[float('inf')]*(N+1) for _ in range(N+1)]

for i in range(1, N+1):
    distance[i][i] = 0

for _ in range(M):
    s,e,cost = map(int,input().split())
    if distance[s][e] > cost:
        distance[s][e] = cost

def floyid_func():

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

floyid_func()


for i in range(1,N+1):
    for j in range(1,N+1):
        if distance[i][j] == float('inf'):
            distance[i][j] = 0

        print(distance[i][j],end=' ')
    print()

 

회고.

자기 자신은 0이라는 조건을 잊어버려 답이 나오지 않았었다....

728x90