https://www.acmicpc.net/problem/14284
14284번: 간선 이어가기 2
정점 n개, 0개의 간선으로 이루어진 무방향 그래프가 주어진다. 그리고 m개의 가중치 간선의 정보가 있는 간선리스트가 주어진다. 간선리스트에 있는 간선 하나씩 그래프에 추가해 나갈 것이다.
www.acmicpc.net
문제를 딱 읽어보니 최소 루트를 구하는 다익스트라 문제같았다.
그래서 다익스트라를 사용해서 풀었더니 통과됐다.
import sys
import heapq
input = sys.stdin.readline
N, M = map(int, input().split(" "))
graph = [[] for i in range(N+1)]
INF = sys.maxsize
distance = [INF for i in range(N+1)]
for i in range(M):
a, b, val = map(int, input().split(" "))
graph[a].append((b, val))
graph[b].append((a, val))
finalA, finalB = map(int, input().split(" "))
distance[finalA] = 0
heap = []
for i in graph[finalA]:
to, val = i[0], i[1]
heapq.heappush(heap, (to, val))
distance[to] = val
while heap:
fr, val = heapq.heappop(heap)
for j in graph[fr]:
to, toval = j[0], j[1]
newVal = val + toval
if distance[to] > newVal:
distance[to] = newVal
heapq.heappush(heap, (to, newVal))
print(distance[finalB])
# 다익스트라

while문을 for문 안에 넣었더니 한 번 틀렸다.
굳이 안넣어도 되기때문에 for문 바깥으로 뺐더니 통과됐다.
'알고리즘' 카테고리의 다른 글
| 백준 12865 평범한 배낭 - 골드5 [파이썬] (0) | 2022.11.16 |
|---|---|
| 백준 23286 허들 넘기 - 골드3 [파이썬] (2) | 2022.11.12 |
| 백준 13023 ABCDE - 골드5 [파이썬] (0) | 2022.11.09 |
| 백준 5430 AC - 골드5 [파이썬] (0) | 2022.11.07 |
| 프로그래머스 [1차]캐시 - level2 [파이썬] (0) | 2022.11.04 |