[白俊]1753番:最短パス解答
質問リンク
https://www.acmicpc.net/problem/1753
解き方の既存のマルチアウトレット問題では、K番頂点から各ノード間の距離を出力する問題がある. では、対応するノードに接続されていない場合、距離リストはINF(1 e 9)で格納され、距離がINFに等しい場合は文字列「INF」で置き換えられて出力されるからである. 完全なコード
https://www.acmicpc.net/problem/1753
解き方
from sys import stdin
import heapq
INF = int(1e9)
def dijkstra(i):
queue = []
heapq.heappush(queue, (0, i))
distance = [INF] * (V+1)
distance[i] = 0
while queue:
dist, index = heapq.heappop(queue)
if distance[index] < dist:
continue
for node_index, node_dist in graph[index]:
cost = dist + node_dist
if distance[node_index] > cost:
distance[node_index] = cost
heapq.heappush(queue, (cost, node_index))
return distance
V, E = map(int, stdin.readline().split())
graph = {}
for i in range(1, V+1):
graph[i] = []
K = int(input())
for _ in range(E):
u, v, w = map(int, stdin.readline().split())
graph[u].append([v, w])
ans = dijkstra(K)
for i in ans[1:]:
if i == INF:
print("INF")
else:
print(i)
Reference
この問題について([白俊]1753番:最短パス解答), 我々は、より多くの情報をここで見つけました https://velog.io/@hyuntall/백준-1753번-최단-경로-문제-풀이-파이썬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol