728x90
반응형
import sys
import heapq
input = sys.stdin.readline
V,e = map(int,input().split()) # 정점, 간선
k = int(input()) # 시작
graph = [ [] for _ in range(V+1)]
for i in range(e):
u,v,w = map(int,input().split())
graph[u].append( (v,w) ) # 이어진 곳, 거리
# 경로 존재하지 않으면 INF
def dij(start):
q = []
dist = [1e9]*(V+1)
heapq.heappush(q, (0,k) )
dist[start]=0
while q:
d, now = heapq.heappop(q)
if dist[now]< d : continue # 전에 방문한 적 있으면 처리하지 않음
for i in graph[now]:
cost = d + i[1]
if cost < dist[i[0]] :
dist[i[0]] = cost
heapq.heappush(q, (cost,i[0]))
return dist
result = dij(k)
for i in range(1,V+1):
if result[i] == 1e9 :
print("INF")
else:
print(result[i])
정점 대문자 V
중간에 입력 받는거 소문자 v....
728x90
반응형
'백준 > 최단경로' 카테고리의 다른 글
# 1238 파티 (0) | 2021.04.10 |
---|---|
# 18352 특정 거리의 도시 찾기 (0) | 2021.04.10 |
# 1504 특정한 최단 경로 (0) | 2021.04.10 |
# 1916 최소비용 구하기 파이썬 (0) | 2021.04.09 |