BAEKJOON #1916) 최소비용 구하기 | Python

    반응형

    다익스트라 최단 경로 알고리즘을 구현하는 기본적인 문제입니다. 아래 글에서 자세한 설명을 보실 수 있습니다:)

     

    🚗 다익스트라 최단 경로 알고리즘

    최단 경로 알고리즘은 말 그대로 가장 짧은 경로를 찾는 알고리즘입니다. 어떤 한 지점에서 다른 한 지점까지의 최단 경로를 찾아야 하는 문제의 경우, 각 지점은 그래프의 노드로, 지점 간 거리

    eunbin00.tistory.com

    # boj_1916.py
    # https://www.acmicpc.net/problem/1916
    
    import sys
    import heapq
    INF = int(1e9)
    
    n = int(sys.stdin.readline())
    m = int(sys.stdin.readline())
    distance =[INF] * (n + 1)
    graph = [[] for _ in range(n + 1)]
    
    for _ in range(m):
    	a, b, c = map(int, sys.stdin.readline().split())
    	graph[a].append((b, c))
    
    def dijkstra(start):
    	q = []
    	heapq.heappush(q, (0, start))
    	distance[start] = 0
    
    	while q:
    		dist, current = heapq.heappop(q)
    		if distance[current] < dist:
    			continue
    
    		for i in graph[current]:
    			cost = dist + i[1]
    			if cost < distance[i[0]]:
    				distance[i[0]] = cost
    				heapq.heappush(q, (cost, i[0]))
    
    start, end = map(int, sys.stdin.readline().split())
    dijkstra(start)
    print(distance[end])
    반응형

    댓글