PS/백준
[테스트케이스 추가] 백준 1916 최소비용 구하기 (python, 파이썬)
지기_
2021. 7. 5. 18:57
반응형
1. 문제
https://www.acmicpc.net/problem/1916
1916번: 최소비용 구하기
첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그
www.acmicpc.net
2. 풀이
다익스트라!
3. 구현
import sys
import heapq
import math
# sys.stdin=open("input.txt")
N = int(sys.stdin.readline())
bus = int(sys.stdin.readline())
gph=[[] for _ in range(N+2)]
dist=[math.inf for _ in range(N+2)]
edges=[]
while bus:
bus-=1
a,b,c = map(int, sys.stdin.readline().split())
gph[a].append((b,c))
v1,v2 = map(int, sys.stdin.readline().split())
dist[v1]=0
heapq.heappush(edges,(dist[v1],v1))
while edges:
cost,pos = heapq.heappop(edges)
for p,c in gph[pos]:
c+=cost
if dist[p]>c:
dist[p]=c
heapq.heappush(edges,(c,p))
print(dist[v2])
4. 추가 테스트케이스
8
20
7 1 1
8 4 6
7 5 2
7 8 7
3 8 5
5 1 7
5 2 1
1 5 8
5 8 1
1 6 3
4 2 6
2 5 8
2 6 1
5 7 8
7 3 9
6 3 3
6 2 8
4 5 6
2 8 2
6 8 8
2 7
답 16
9
24
9 1 4
8 5 4
1 5 1
9 2 2
7 8 5
9 7 7
7 6 3
5 4 7
5 1 3
5 8 5
5 2 1
4 8 3
5 7 7
4 3 1
6 5 5
8 2 2
4 6 5
1 9 4
9 6 9
6 1 6
5 6 5
4 7 2
3 2 2
8 3 4
1 7
답 8
반응형