컴공생의 다이어리
[파이썬, Python] 백준 1916번 : 최소비용 구하기 본문
백준 1916번 : 최소비용 구하기
내 코드
import sys, heapq
from collections import defaultdict
input = sys.stdin.readline
INF = int(1e9)
n = int(input()) # 도시의 개수
m = int(input()) # 버스의 개수
graph = defaultdict(list) # 버스 정보
for _ in range(m):
s, e, c = map(int, input().split())
graph[s].append((e, c))
start, end = map(int, input().split()) # 출발점과 도착점 도시번호
distance = [INF] * (n + 1)
queue = []
heapq.heappush(queue, (0, start))
while queue: # dijkstra 수행
dist, curr = heapq.heappop(queue)
if distance[curr] < dist: # 기존 거리보다 멀다면 고려하지 않아도 됨
continue
for next in graph[curr]:
cost = dist + next[1]
if distance[next[0]] > cost: # 기존보다 단축할 수 있다면
distance[next[0]] = cost
heapq.heappush(queue, (cost, next[0]))
print(distance[end])
728x90
반응형
'Development > Algorithm & Coding Test' 카테고리의 다른 글
[파이썬, Python] 백준 10986번 : 나머지 합 (0) | 2022.07.24 |
---|---|
[파이썬, Python] 백준 20040번 : 사이클 게임 (0) | 2022.07.23 |
[파이썬, Python] 백준 9421번 : 소수상근수 (0) | 2022.07.19 |
[프로그래머스] 양궁대회 - 파이썬(Python) (0) | 2022.07.18 |
[프로그래머스] 교점에 별 만들기 - 파이썬(Python) (0) | 2022.07.17 |
Comments