返回题目列表
COMP2521
BFS · 无权最短距离
BFS · 求两点间最短边数
读入一张无向图和两个顶点 s、t,输出从 s 到 t 的最短路径长度(最少经过几条边)。不可达输出 -1;s == t 时输出 0。
这是 BFS 最招牌的用途:在无权图里,BFS 第一次到达某点时走的就是最短路。请补全 shortestDist。
易错点:① 用dist[]数组(初值 -1)兼当 visited 用:dist[w] < 0表示还没访问。② 第一次给dist[w]赋值时dist[w] = dist[v] + 1,之后别再改它(第一次到达即最短)。③ 必须用<strong>队列</strong>(先进先出);用栈就成了 DFS,最短路保证失效。
输入
- 第 1 行:
V E。 - 接下来
E行:每行u v,表示无向边。 - 最后一行:
s t(起点、终点)。
输出
- 一行:
s到t的最短边数;不可达为-1。
示例:输入 4 3 / 0 1 / 1 2 / 2 3 / 0 3 → 输出 3(0→1→2→3)。
样例
stdin
6 7 0 1 0 2 1 3 2 3 2 4 3 5 4 5 0 5
期望输出
3
stdin
4 3 0 1 1 2 2 3 0 3
期望输出
3
c-dcc
14