728x90
https://www.acmicpc.net/problem/1916
import sys; input = sys.stdin.readline
from heapq import heappop, heappush
inf = 100000000 # 최대값 (max(N)-1) * max(w)
N = int(input()) # 1000
M = int(input()) # 100000
link_list = [list() for _ in range(N + 1)]
for _ in range(M):
s, e, w = map(int,input().split())
link_list[s].append((w, e))
# link_list[e].append((w, s))
s, e = map(int, input().split())
dist = [inf for _ in range(N + 1)]
visit = [False for _ in range(N + 1)]
dist[s] = 0
q = [(0, s)]
while q:
w, cur = heappop(q)
if visit[cur]: continue
visit[cur] = True
for adj_w, adj in link_list[cur]:
if dist[adj] > adj_w + w:
dist[adj] = adj_w + w
heappush(q,(dist[adj], adj))
print(dist[e])
최소비용을 구해야하는 문제인데 시작과 끝점이 지정되어있으므로 다익스트라를 사용해서 풀면된다.
이전에 풀었던 문제인데 재채점이 되어서 다시 풀었다
'STUDY > Algorithm' 카테고리의 다른 글
[프로그래머스] 캐시, 2018 KAKAO BLIND RECRUITMENT[1차], python (0) | 2021.07.19 |
---|---|
[프로그래머스] 쿼드압축 후 개수 세기, 월간 코드 챌린지 시즌1, python (0) | 2021.07.18 |
[백준] 14503 로봇 청소기 python, C (0) | 2021.07.13 |
[백준] 2108 통계학, python (0) | 2021.07.11 |
[백준] 16234 인구 이동 python(pypy3) (0) | 2021.07.08 |