34 lines
763 B
Python
34 lines
763 B
Python
import sys
|
|
input = sys.stdin.readline
|
|
from queue import PriorityQueue
|
|
|
|
V, E = map(int, input().split())
|
|
K = int(input())
|
|
distance = [sys.maxsize] * (V+1)
|
|
visited = [False] * (V+1)
|
|
myList = [[] for _ in range(V+1)]
|
|
q = PriorityQueue()
|
|
|
|
for _ in range(E):
|
|
u, v, w = map(int, input().split())
|
|
myList[u].append((v, w))
|
|
|
|
q.put((0, K))
|
|
distance[K] = 0
|
|
|
|
while q.qsize() > 0 :
|
|
current = q.get()
|
|
c_v = current[1]
|
|
if visited[c_v]:
|
|
continue
|
|
visited[c_v] = True
|
|
for next, value in myList[c_v]:
|
|
if distance[next] > distance[c_v] + value:
|
|
distance[next] = distance[c_v] + value
|
|
q.put((distance[next], next))
|
|
|
|
for i in range(1, V+1):
|
|
if visited[i]:
|
|
print(distance[i])
|
|
else:
|
|
print("INF") |