본문 바로가기

Algorithm/Shortest Way

플로이드

 

 

 

유형 파악 및 구현

이 문제는 플로이드-워셜 알고리즘으로 간단히 구현 가능하다.

다만, 이 문제를 풀면서 정확히 정리해야함을 느꼈다.

쉬운문제인만큼 꼼꼼히 봐야한다.

 

Problems

- 간선별로 양방향 노드가 연결된게 아닌데 처리해버림 

- 시작노드와 도착노드를 연결하는 노선은 하나가 아닐 수 있다라는 조건을 놓침

- INF인 경우 0처리 안함.

 

코드

INF = int(1e9)
n = int(input())
m = int(input())

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

for i in range(m):
    a, b, c = map(int, input().split())
    graph[a][b] = min(graph[a][b], c)

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


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


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

 

 

'Algorithm > Shortest Way' 카테고리의 다른 글

화성 탐사  (0) 2023.04.13
정확한 순위  (0) 2023.04.13
전보  (0) 2023.04.12
미래 도시  (0) 2023.04.12
Shortest Way - Concept  (0) 2023.04.12