https://www.acmicpc.net/problem/1916
풀이
1, 양방향 문제이다. INF는 10억이기에 int(1e9)로 해주었다.
2, 다익스트라 적용
# 1916번 최소비용 구하기
import heapq
import sys
input = sys.stdin.readline
INF = int(1e9)
def dijkstra(start, target):
q = []
# heapq.heappush(dist, node)
heapq.heappush(q, (0, start))
distance[start] = 0
while q:
dist, now = heapq.heappop(q)
if distance[now] < dist:
continue
# vertex, weight
for v, w in graph[now]:
cost = dist + w
if cost < distance[v]:
distance[v] = cost
heapq.heappush(q, (cost, v))
print(distance[target])
city = int(input())
bus = int(input())
distance = [INF] * (city+1)
graph = [[] for i in range(city+1)]
for _ in range(bus):
a, b, c = map(int, input().split())
graph[a].append((b,c))
graph[b].append((a,c))
s, t = map(int, input().split())
dijkstra(s, t)
출력결과
'백준 > 최단거리' 카테고리의 다른 글
[백준] 11657번 타임머신 - 파이썬 (0) | 2022.02.12 |
---|---|
[백준] 1504번 특정한 최단 경로 - 파이썬 (0) | 2022.02.12 |
[백준] 14284번 간선 이어가기 2 -파이썬 (0) | 2022.02.12 |
[백준] 5972번 택배 배송 - 파이썬 (0) | 2022.02.12 |
[백준] 17396번 백도어 - 파이썬 (0) | 2022.02.11 |