노드와 비용을 입력받고 최소 비용이 되는 길로 가야겠다
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
import heapq
n,m=map(int,input().split())
graph=[[] for _ in range(n+1)]
for _ in range(m):
a,b,c=map(int,input().split())
graph[a].append((b,c))
graph[b].append((a,c))
INF=int(1e9)
dist=[INF]*(n+1)
def dijkstra(start):
visit=[]
q=[]
heapq.heappush(q,(0, start))
dist[start]=0
while q:
distance, now= heapq.heappop(q)
if distance> dist[now]: continue
for i in graph[now]:
cost= distance + i[1]
if cost< dist[i[0]]:
dist[i[0]]=cost
heapq.heappush(q,(cost, i[0]))
visit.append(now)
dijkstra(1)
print(dist[n])
평범하게 다익스트라 함수를 짠다. 헛간 1에서 출발한다. 힙큐를 이용해서 가장 작은 비용을 기록하다보면 dist[n]에 최종 최소비용이 남는다.
'Koala - 15기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/C++] 1940번: 주몽 (0) | 2024.08.19 |
---|---|
[BOJ/Rust] 1854번 : K번째 최단경로 찾기 (0) | 2024.08.18 |
[BOJ/C++] 1916번 : 최소비용 구하기 (0) | 2024.08.18 |
[BOJ/Python] 13849번: 숨바꼭질 3 (0) | 2024.08.18 |
[백준/C++] 2589번: 보물섬 (0) | 2024.08.18 |