반응형
알고리즘 분류
- 그래프 이론
- 다익스트라
SOLUTION
import sys
import heapq
INF = sys.maxsize
def dijkstra(start):
heap = []
distance[start] = 0
# heap에 (가중치, 노드) 순으로 넣어놔야 시간을 더 줄일 수 있다
heapq.heappush(heap, (0, start))
while heap:
cost, now = heapq.heappop(heap)
if distance[now] < cost:
continue
for next_node, weight in graph[now]:
next_cost = cost + weight
# 더 적은 비용으로 해당 노드를 갈 수 있을 때 갱신해줌
if next_cost < distance[next_node]:
distance[next_node] = next_cost
heapq.heappush(heap, (next_cost, next_node))
V, E = map(int, sys.stdin.readline().split())
K = int(sys.stdin.readline())
distance = [INF] * (V+1)
graph = [[] for _ in range(V + 1)]
for _ in range(E):
u, v, w = map(int, sys.stdin.readline().split())
graph[u].append((v,w))
dijkstra(K)
for i in range(1, V+1):
print("INF" if distance[i] == INF else distance[i])
'코딩테스트 대비 > 단계별 코딩 테스트 준비(27일 과정)' 카테고리의 다른 글
[투 포인터/Python] 3273번: 두 수의 합 - 효과는 굉장했다! (0) | 2022.02.19 |
---|---|
[다익스트라/Python] 1916번: 최소비용 구하기 - 효과는 굉장했다! (0) | 2022.02.19 |
[BFS & DFS/Python] 7576번: 토마토 - 효과는 굉장했다! (0) | 2022.02.19 |
[BFS & DFS/Python] 1260번: DFS와 BFS - 효과는 굉장했다! (0) | 2022.02.19 |
[우선순위 큐/Python] 1655번: 가운데를 말해요 - 효과는 굉장했다! (0) | 2022.02.19 |