반응형
다익스트라 최단 경로 알고리즘을 구현하는 기본적인 문제입니다. 아래 글에서 자세한 설명을 보실 수 있습니다:)
# boj_1916.py
# https://www.acmicpc.net/problem/1916
import sys
import heapq
INF = int(1e9)
n = int(sys.stdin.readline())
m = int(sys.stdin.readline())
distance =[INF] * (n + 1)
graph = [[] for _ in range(n + 1)]
for _ in range(m):
a, b, c = map(int, sys.stdin.readline().split())
graph[a].append((b, c))
def dijkstra(start):
q = []
heapq.heappush(q, (0, start))
distance[start] = 0
while q:
dist, current = heapq.heappop(q)
if distance[current] < dist:
continue
for i in graph[current]:
cost = dist + i[1]
if cost < distance[i[0]]:
distance[i[0]] = cost
heapq.heappush(q, (cost, i[0]))
start, end = map(int, sys.stdin.readline().split())
dijkstra(start)
print(distance[end])
반응형
'Algorithm > BOJ' 카테고리의 다른 글
BAEKJOON #9461) 파도반 수열 | DP | Python (0) | 2022.06.27 |
---|---|
BAEKJOON #11726) 2xn 타일링 | DP | Python (0) | 2022.06.27 |
BAEKJOON #1655) 가운데를 말해요(Python) (0) | 2022.03.02 |
BAEKJOON #11279) 최대 힙 (Python) (0) | 2022.03.01 |
BAEKJOON #1927) 최소 힙 (Python) (0) | 2022.03.01 |
댓글