5972. 택배 배송
5972번: 택배 배송
농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는
www.acmicpc.net
- 다익스트라
- heap을 사용해서 거리가 짧은 값을 먼저 불러옴
- distance를 처음에 모두 INF로 초기화
- graph : defaultdict()
- key: start_node
- value: (distance, end_node)
- 매번 최소 거리로 업데이트
- 📍heap 생성시 그냥 리스트 만들어서 heapq.heappush
#가중치 있는 최단거리: 다익스트라
import heapq
from collections import defaultdict
n,m=map(int,input().split())
distance=[int(1e9) for _ in range(n+1)]
queue=[]
graph=defaultdict(list)
for _ in range(m):
x,y,v=map(int,input().split())
graph[x].append((v,y))
graph[y].append((v,x))
distance[1]=0
heapq.heappush(queue,(0,1))
def dijkstra():
while queue:
dist, start=heapq.heappop(queue)
if distance[start]<dist: continue
for next_dist, next_node in graph[start]:
if distance[next_node]>dist+next_dist:
distance[next_node]= dist+next_dist
heapq.heappush(queue,(dist+next_dist, next_node))
dijkstra()
print(distance[n])'코딩테스트 > BOJ' 카테고리의 다른 글
| [백준][그리디] 14247. 나무 자르기 (1) | 2023.08.30 |
|---|---|
| [백준][그리디][비트마스킹] 1052.물병 (0) | 2023.08.25 |
| [백준][sliding window] 20437. 문자열게임2 (0) | 2023.08.22 |
| [백준][구현] 15927.회문은 회문아니야!! (0) | 2023.08.12 |
| [백준][구현][분할정복][DFS] 16719. JOAC (0) | 2023.08.12 |