diff --git "a/\354\235\264\353\213\210\354\247\200\354\210\230/1753_\354\265\234\353\213\250\352\262\275\353\241\234.py" "b/\354\235\264\353\213\210\354\247\200\354\210\230/1753_\354\265\234\353\213\250\352\262\275\353\241\234.py" new file mode 100644 index 0000000..191fb49 --- /dev/null +++ "b/\354\235\264\353\213\210\354\247\200\354\210\230/1753_\354\265\234\353\213\250\352\262\275\353\241\234.py" @@ -0,0 +1,42 @@ +#1753 + +import heapq +import sys +input = sys.stdin.readline +INF = int(1e9) + + +n,m = map(int, input().split()) +start = int(input()) +graph = [[] for i in range(n+1)] +distance = [INF]*(n+1) + +for _ in range(m): + a,b,c = map(int, input().split()) + graph[a].append((b,c)) + +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 i in graph[now]: + cost = dist + i[1] + if cost < distance[i[0]]: + distance[i[0]] = cost + heapq.heappush(q, (cost, i[0])) + print(q) + +dijkstra(start) + +for i in range(1, n+1): + if distance[i]==INF: + print("INF") + else: + print(distance[i]) + +