https://www.acmicpc.net/problem/5972
5972번: 택배 배송
농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는
www.acmicpc.net
풀이
1, 단방향인것을 주의해서 문제를 풀어주길 바란다. 최대치 또한 고려해서 INF를 sys.maxsize로 고쳐주었다.
2, 다익스트라 적용
# 5972번 택배 배송
import sys
import heapq
input = sys.stdin.readline
INF = sys.maxsize
def dijkstra(target):
q = []
heapq.heappush(q, (0, 1))
distance[0] = 0
while q:
dist, farm = heapq.heappop(q)
# 애초에 지나온 경로의 값이 이전 도착값보다 크다면 패스
if distance[farm] < dist:
continue
for v, w in graph[farm]:
cost = dist + w
if distance[v] > cost:
distance[v] = cost
heapq.heappush(q, (cost, v))
print(distance[target])
n, m = map(int, input().split())
graph = [[] for i in range(n+1)]
distance = [INF] * (n+1)
for _ in range(m):
a, b, c = map(int, input().split())
graph[a].append((b, c))
graph[b].append((a, c))
dijkstra(n)
출력결과
'백준 > 최단거리' 카테고리의 다른 글
[백준] 11657번 타임머신 - 파이썬 (0) | 2022.02.12 |
---|---|
[백준] 1504번 특정한 최단 경로 - 파이썬 (0) | 2022.02.12 |
[백준] 14284번 간선 이어가기 2 -파이썬 (0) | 2022.02.12 |
[백준] 1916번 최소비용 구하기 - 파이썬 (0) | 2022.02.12 |
[백준] 17396번 백도어 - 파이썬 (0) | 2022.02.11 |