题解 | 【模板】单源最短路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 )

全部评论

相关推荐

程序员牛肉:继续沉淀吧同学,你这就是纯纯的流水线产品。 差不多的学历+两个烂大街项目。自身学历又不行,现在找啥实习呢。有点太浮躁了。多花点心思搞搞ai,开源和八股。这比你这段时间捣鼓一段小厂实习要好得多;
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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