티스토리 뷰
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])
가중치가 주어지고 최소비용을 구하는 문제로 다익스트라를 사용하여 풀었다.
시작 지점에서 다른 정점까지 갈 수 있는 최소비용으로 초기화 해준다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 18428번, 감시 피하기 (Python) (0) | 2021.08.20 |
---|---|
[백준] 1922번, 네트워크 연결 (Python) (0) | 2021.08.18 |
[백준] 14888번, 연산자 끼워넣기 (Python) (0) | 2021.08.17 |
[백준] 16236번, 아기상어 (Python) (0) | 2021.08.16 |
[백준] 1759번, 암호 만들기 (Python) (0) | 2021.08.13 |
댓글