https://www.acmicpc.net/problem/14284
14284번: 간선 이어가기 2
정점 n개, 0개의 간선으로 이루어진 무방향 그래프가 주어진다. 그리고 m개의 가중치 간선의 정보가 있는 간선리스트가 주어진다. 간선리스트에 있는 간선 하나씩 그래프에 추가해 나갈 것이다.
www.acmicpc.net
풀이
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 |