문제

풀이
- a번째 도시에서 b번째 도시까지 가는데 드는 최소비용을 출력하는 문제로 
최단 경로 유형이다. 
- 입력변수의 범위가 크므로 
다익스트라 알고리즘으로 접근했다. 
코드
import heapq  
import sys
input = sys.stdin.readline
inf = int(1e9)  
def dijkstra(start: int, end: int) -> int:
    
    distance = [inf] * (n + 1)
    
    queue = []
    
    heapq.heappush(queue, (0, start))
    distance[start] = 0
    
    while queue:
        
        dist, now = heapq.heappop(queue)
        if distance[now] < dist:
            continue
        
        for i in graph[now]:
            cost = dist + i[1]
            
            if cost < distance[i[0]]:
                distance[i[0]] = cost
                heapq.heappush(queue, (cost, i[0]))
    return distance[end]
if __name__ == '__main__':
    
    n = int(input())
    
    m = int(input())
    
    graph = [[] for _ in range(n+1)]
    
    for _ in range(m):
        
        x, y, z = map(int, input().split())
        
        graph[x].append([y, z])
    start, end = map(int, input().split())
    
    print(dijkstra(start, end))
결과

출처 & 깃허브
BOJ 1916
GITHUB