题解 | 【模板】单源最短路1

【模板】单源最短路1

https://www.nowcoder.com/practice/f24504c9ff544f7c808f76693cc34af8

from collections import defaultdict
import heapq
n, m = map(int, input().split())
G = defaultdict(set)
for i in range(m):
    u, v = map(int, input().split())
    G[u].add((v, 1)) #w = 1
    G[v].add((u, 1)) # w = 1
# print(G)
distances = {v: float("inf") for v in G}
# print(distances)
start = 1
distances[start] = 0
heap = [(0, start)]
heapq.heapify(heap)
while heap:
    distance, node = heapq.heappop(heap)
    # print(node)
    if distance > distances[node]:
        continue
    for neighbor, weight in G[node]:
        alt = distance + weight
        if distances[neighbor] > alt:
            distances[neighbor] = alt
            heapq.heappush(heap, (alt, neighbor))
# print(distances)
t = distances[n] if n in distances else -1
print( -1 if t is float("inf") else t )

全部评论

相关推荐

哞客37422655...:这就是真实社会,没有花里胡哨的安慰,让你感受到阶级分明,不浪费彼此时间。虽然露骨但是唉
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务