/ Vijos / 题库 /

无向无权图的最短路径

无向无权图的最短路径

时间限制:1秒  内存限制:256M


【问题描述】

  给出 \(n\) 个顶点(编号为 \(1\sim n\)),\(m\) 条边的无向连通无权简单图,请完成下列任务:
  任务1、计算顶点 \(s\) 到顶点 \(t\) 的最短路径数目。
  任务2、计算顶点 \(s\) 到顶点 \(t\) 的最短路径长度。然后输出最短路径经过的顶点序列,如果有多条,则输出顶点排列字典序最小的。
  任务3、判断边 \((u,v)\) 是否在 \(s\) 到 \(t\) 的最短路径上。

【输入格式】

  第一行包含两个整数:\(n,m\),表示图的顶点和边的数目。
  接下来的 \(m\) 行,每行包含 2 个整数:\(a,b(1 ≤ a, b ≤ n)\),表示图的一条边关联的顶点为 \(a,b\)。
  第 \(m+1\) 行包含两个整数 \(s,t(1<=s,t<=n且s!=t)\)。
  第 \(m+2\) 行一个整数 \(q\),表示查询数目。
  接下来的 \(q\) 行,每行包含两个整数:\(u,v\),表示查询边 \((u,v)\) 是否在 \(s\) 到 \(t\) 的最短路径上。 

【输出格式】

  第 1 行:一个整数表示 \(s\) 到 \(t\) 的最短数 \(mod\ (10^9+7)\)。如果存在 \(s\) 到 \(t\) 的最短路径,那么在第 2 行先输出 \(s\) 到 \(t\) 的最短距,接下来的若干整数表示 \(s\) 到 \(t\) 的一条字典序最小的最短路径序列。
  接下来的 \(q\) 行,每行回答一个询问,若 \((u,v)\) 在最短路径上输出"Yes",否则输出"No"。

【输入输出样例】

 Input

5 6
1 2
2 3
3 4
4 5
2 4
1 3
1 5
2
2 3
3 4

 Output

2
3 1 2 4 5
No
Yes

【数据说明】

  对于 \(100\%\) 的数据 \(1≤N≤50000\),\(1≤M≤100000\),\(1≤q≤10000\)。

【来源】

  Mr.he

信息

ID
1605
难度
(无)
分类
图结构 点击显示
标签
(无)
递交数
0
已通过
0
通过率
?
被复制
2
上传者