728x90
import sys
input = sys.stdin.readline
from heapq import heappop, heappush
N = int(input())
M = int(input())
link_arr = [list() for _ in range(N + 1)]
for _ in range(M):
st, en, we = map(int, input().split())
link_arr[st].append((en, we))
# dijkstra
start, end = map(int, input().split())
inf = 10 ** 10
visit = [0] * (N + 1)
dist = [inf] * (N + 1)
q = [(0, start)]
dist[start] = 0
while q:
w, cur = heappop(q)
visit[cur] = 1
for adj_node, adj_w in link_arr[cur]:
if not visit[adj_node] and dist[adj_node] > dist[cur] + adj_w:
dist[adj_node] = dist[cur] + adj_w
heappush(q, (dist[adj_node], adj_node))
print(dist[end])
다익스트라로 문제풀었다
문제를 잘 봐야하는게 단방향인지 양방향인지 제대로 안봐서 틀렸었다...
나머지는 쉽게 구현했다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 9095 1, 2, 3 더하기 C python (0) | 2021.05.04 |
---|---|
[백준] 2630 색종이 만들기 python (0) | 2021.05.01 |
[백준] 1240 노드사이의 거리 python (0) | 2021.04.29 |
[백준] 2644 촌수계산 python (0) | 2021.04.29 |
[백준] 1107 리모컨 python (0) | 2021.04.28 |