https://www.acmicpc.net/problem/14284
풀이
1, 양방향이며 최대치는 5억이기에 INF는 10억으로 잡아주었다.
2, 다익스트라 적용
# 14284번 간선 이어가기 2
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])
n, m = map(int, input().split())
distance = [INF] * (n+1)
graph = [[] for i in range(n+1)]
for i in range(m):
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 |
[백준] 1916번 최소비용 구하기 - 파이썬 (0) | 2022.02.12 |
[백준] 5972번 택배 배송 - 파이썬 (0) | 2022.02.12 |
[백준] 17396번 백도어 - 파이썬 (0) | 2022.02.11 |