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

【模板】单源最短路2

https://www.nowcoder.com/practice/7c1740c3d4ba4b3486df4847ee6e8fc7

from collections import defaultdict
import sys
import heapq
input=sys.stdin.readline
n,m = map(int, input().split())
neighbors = defaultdict(list)
for _ in range(m):
    u,v,w = map(int, input().split())
    neighbors[u].append((v,w))
    neighbors[v].append((u,w))

pq = []
heapq.heappush(pq,(0,1)) #tuple[0]是优先级,在这里用距离表示,tuple[1]是顶点编号。
visited = [0]*5001
while len(pq):
    cur_d, cur_v = heapq.heappop(pq) # 优先队列弹出距离最小的那个
    visited[cur_v] = 1 # 标记访问过
    if cur_v == n: 
        print(cur_d)
        break
    for v, w in neighbors[cur_v]:# 访问当前cur_v 的近邻和权值
        if visited[v] == 0:
            heapq.heappush(pq, (cur_d+w, v)) #自动排序
else:
    print(-1)

全部评论

相关推荐

头像
04-17 09:29
已编辑
湖南农业大学 后端
睡姿决定发型丫:本硕末9也是0offer,简历挂了挺多,只有淘天 美团 中兴给了面试机会,淘天二面挂,美团一面kpi面,中兴一面感觉也大概率kpi(虽然国企,但一面0技术纯聊天有点离谱吧)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务