728x90
반응형
https://www.acmicpc.net/problem/1753
다익스트라 알고리즘 그대로 구현
import heapq
import sys
input = sys.stdin.readline
V, E = map(int, input().rstrip().split())
K = int(input().rstrip())
graph = [[] for _ in range(V+1)]
for _ in range(E):
u, v, w = map(int, input().rstrip().split())
graph[u].append((v, w))
INF = int(1e9)
distance = [INF]*(V+1)
def dijkstra(start):
q = []
heapq.heappush(q, (0, start))
distance[start] = 0
while q:
dist, now = heapq.heappop(q)
if distance[now] < dist:
continue
for cv, cw in graph[now]:
cost = dist + cw
if cost < distance[cv]:
distance[cv] = cost
heapq.heappush(q, (cost, cv))
dijkstra(K)
for vi in range(1, V+1):
if distance[vi] == INF:
print('INF')
else:
print(distance[vi])
플로이드 워셜 알고리즘 점화식으로 풀면 메모리 초과 발생함 ㅋ
728x90
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
BOJ 1916 최소비용 구하기 Python3 (0) | 2023.07.15 |
---|---|
BOJ 11404 플로이드 Python3 - 플로이드 워셜 알고리즘 (0) | 2023.07.15 |
BOJ 2606 바이러스 Python3 (0) | 2023.07.06 |
BOJ 13458 시험 감독 Python3 (0) | 2023.07.03 |
BOJ 1463 1로 만들기 Python3 (0) | 2023.06.28 |