https://www.acmicpc.net/problem/14284
문제를 딱 읽어보니 최소 루트를 구하는 다익스트라 문제같았다.
그래서 다익스트라를 사용해서 풀었더니 통과됐다.
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 |