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

【模板】单源最短路1

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

from collections import defaultdict, deque


def bfs(graph, start, end):
    queue = deque([(start, 0)])
    visited = {start: 0}

    while queue:
        node, dist = queue.popleft()
        if node == end:
            return dist

        for neighbor in graph[node]:
            if neighbor not in visited:
                visited[neighbor] = dist + 1
                queue.append((neighbor, dist + 1))

    return -1  # 如果找不到终点,返回-1


def build_graph(n, m):
    graph = defaultdict(list)
    for _ in range(m):
        u, v = map(int, input().split())
        graph[u].append(v)
        graph[v].append(u)  # 无向图,双向添加边
    return graph


# 输入数据
n, m = map(int, input().split())
graph = build_graph(n, m)

shortest_distance = bfs(graph, 1, n)
print(shortest_distance)

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务