[ 접근 방법 ]
전형적인 다익스트라 알고리즘 문제이다.
책의 학습내용을 토대로 다익스트라 알고리즘을 구현한다.
[ 작성 코드 ]
import heapq
import sys
input = sys.stdin.readline
INF = int(1e9)
n, m, c = map(int, input().split())
distance = [INF] * (n + 1)
graph = [ [] for _ in range(n+1) ]
for i in range (m):
a, b, c = map(int , input().split() )
graph[a].append((b,c))
def dijkstra(c):
q = []
distance[c] = 0
heapq.heappush(q,(0,c))
while q:
dist, now = heapq.heappop(q)
if distance[now] < dist:
continue
for i in graph[now]:
if distance[i[0]] > dist + i[1]:
distance[i[0]] = dist + i[1]
heapq.heappush(dist + i[1],i[0])
'코딩 테스트 > 이취코테' 카테고리의 다른 글
Ch10.그래프 이론 - 도시 분할 계획 (0) | 2023.05.01 |
---|---|
Ch10.그래프 이론 - 팀 결성 (0) | 2023.05.01 |
Ch9.최단 경로 - 미래 도시 (0) | 2023.04.27 |
Ch8.다이나믹 프로그래밍 - 효율적인 화폐 구성 (0) | 2023.03.10 |
Ch8.다이나믹 프로그래밍 - 바닥 공사 (0) | 2023.03.10 |