티스토리 뷰

728x90
반응형

문제

https://www.acmicpc.net/problem/1916

 

1916번: 최소비용 구하기

첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그

www.acmicpc.net

 

코드

import heapq
import sys

INF = sys.maxsize
input = sys.stdin.readline
n = int(input())
m = int(input())

graph = [[] for _ in range(n+1)]
distance = [INF for _ in range(n+1)]

for i in range(m):
    a,b,c = map(int,input().split())
    graph[a].append((c,b))

start, end = map(int, input().split())
queue = []

def dijkstra(start):
    heapq.heappush(queue, (0, start))
    while queue:
        wei, now = heapq.heappop(queue)
        if distance[now] < wei:
            continue
        for w, next in graph[now]:
            next_wei = w + wei
            if distance[next] > next_wei:
                distance[next] = next_wei
                heapq.heappush(queue, (next_wei, next))
dijkstra(start)
print(distance[end])

가중치가 주어지고 최소비용을 구하는 문제로 다익스트라를 사용하여 풀었다.

 

시작 지점에서 다른 정점까지 갈 수 있는 최소비용으로 초기화 해준다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28