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

【模板】单源最短路1

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

dijkstra,权重为1的简单情况

from collections import defaultdict
import heapq
def SSP(edges,start_node,end_node):
    g=defaultdict(list)
    for u,v in edges:
        g[u].append((1,v))
        g[v].append((1,u))

    if end_node not in g:
        return -1

    distances={k:float('inf') for k in g}
    visited=set()
    pq=[(0,start_node)]

    while pq:
        cur_dis,cur_node=heapq.heappop(pq)
        if cur_node in visited:
            continue
        visited.add(cur_node)
        for w,v in g[cur_node]:
            dis=cur_dis+w
            if dis<distances[v]:
                distances[v]=dis
                heapq.heappush(pq,(dis,v))
        if cur_node == end_node:
            break
    return distances[end_node] if distances[end_node]<float('inf') else -1

n,m=map(int,input().split(' '))
e=[]
for _ in range(m):
    e.append(map(int,input().split(' ')))
print(SSP(e,1,n))

全部评论

相关推荐

自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
07-15 12:15
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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