티스토리 뷰

플로이드-워셜 알고리즘의 전형적인 예제

마지막 출력에 길 없으면 0 출력한다 구현하는 걸 잊지 말아야한다.

채점 진짜 오래걸렸다. 5분 걸림... 왜지?

 

n = int(input())
m = int(input())
INF = int(1e9)
graph = [[INF] * (n+1) for _ in range(n+1)]
for _ in range(m):
    a, b, c = map(int, input().split())
    graph[a][b] = min(graph[a][b], c)

for i in range(n+1):
    for j in range(n+1):
        if i == j:
            graph[i][j] = 0

for k in range(n+1):
    for a in range(n+1):
        for b in range(n+1):
            graph[a][b] = min(graph[a][b], graph[a][k] + graph[k][b])

for i in range(1, n+1):
    for j in range(1, n+1):
        if graph[i][j] >= INF:
            print(0, end = " ")
        else:
            print(graph[i][j], end = " ")
    print()

'코딩테스트 대비' 카테고리의 다른 글

[백준] 1197번 최소 스패닝 트리  (0) 2022.03.08
[백준] 9372번 상근이의 여행  (0) 2022.03.08
[프로그래머스] 가장 먼 노드  (0) 2022.03.07
[프로그래머스] 배달  (0) 2022.03.07
[백준] 1238번 파티  (0) 2022.03.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함