#B0195. 消息扩散

消息扩散

题目描述

一张城市通信网共有 nn 个节点,编号为 1n1 \sim n,节点之间有 mm 条双向连线。

总部位于节点 11。现在总部要向所有节点发送一条消息。消息每经过一条连线,就需要恰好 11 单位时间。

对于每个节点 ii,你需要回答:

从节点 11 出发,恰好按照最短时间把消息送到节点 ii,一共有多少种不同的路线?

如果两条路线经过的边序列不同,就认为它们是不同的路线。

由于答案可能很大,请对 100003100003 取模。

如果某个节点无法从节点 11 到达,则它的答案为 00

输入格式

第一行两个整数 n,mn, m

接下来 mm 行,每行两个整数 u,vu, v,表示节点 uu 和节点 vv 之间有一条双向连线。

数据范围:

  • 1n5×1041 \le n \le 5 \times 10^4
  • 0m1.2×1050 \le m \le 1.2 \times 10^5
  • 测试数据不包含重边和自环

输出格式

输出 nn 行,第 ii 行输出从节点 11 到节点 ii 的最短路线条数对 100003100003 取模后的结果。

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