티스토리 뷰
728x90
https://www.acmicpc.net/problem/1753
- 해설 :
그래프에서 V와 E의 정보가 주어지고 시작점의 정보가 주어질 때, 시작점에서부터 다른 모든 V까지의 최단거리(가중치 합의 최솟값)을 구하는 문제이다. 쉽게 말하면 다익스트라 기본형 문제이다.
- 풀이 :
다익스트라 알고리즘을 구현할 수 있는지 없는지를 묻는 문제이다.
다익스트라는 알고리즘중 구현이 쉽지 않기 때문에 단순 구현이지만 골드5의 난이도를 부여받은 것 같다.
- 소스코드 :
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
29
|
from heapq import heappop,heappush
import sys
def dijkstra(start):
heap = []
answer[start] = 0
heappush(heap, [0, start])
while heap:
w, n = heappop(heap)
for n_n, wei in weight[n]:
n_w = wei + w
if n_w < answer[n_n]:
answer[n_n] = n_w
heappush(heap, [n_w, n_n])
if __name__ == "__main__":
V,E = map(int,sys.stdin.readline().split())
start = int(sys.stdin.readline())
weight = [[] for _ in range(V+1)]
answer = [10000000]*(V+1)
for _ in range(E):
a,b,c = map(int,sys.stdin.readline().split())
weight[a].append([b,c])
dijkstra(start)
for ans in answer[1:]:
if ans == 10000000:
print("INF")
else:
print(ans)
|
cs |
320x100
'Algorithm > Dijkstra' 카테고리의 다른 글
(Python) - BOJ(11779번) : 최소비용 구하기 2 (0) | 2022.03.08 |
---|---|
(Python) - BOJ(4485번) : 녹색 옷 입은 애가 젤다지? (0) | 2022.03.08 |
(Python) - BOJ(1238번) : 파티 (0) | 2022.03.08 |
(Python) - BOJ(1854번) : K번째 최단경로 찾기 (0) | 2022.03.08 |
(Python) - BOJ(1916번) : 최소비용 구하기 (0) | 2022.03.03 |
댓글
© 2022 WonSeok, All rights reserved