#abc211d. [abc211_d]Number of Shortest paths

[abc211_d]Number of Shortest paths

题目描述

AtCoder 共有 NN 个城市,编号从 11NN,以及 MM 条道路,编号从 11MM

通过第 ii 条道路,你可以在一个小时内从城市 AiA_i 前往城市 BiB_i,或者反过来。

有多少条路径可以尽早地从城市 11 到达城市 NN
由于计数可能非常大,打印结果对 (109+7)(10^9 + 7) 取模。

约束条件

  • 2leqNleq2times1052 \\leq N \\leq 2\\times 10^5
  • 0leqMleq2times1050 \\leq M \\leq 2\\times 10^5
  • 1leqAi<BileqN1 \\leq A_i < B_i \\leq N
  • 对于所有的 ii(Ai,Bi)(A_i, B_i) 是不同的。
  • 输入中的所有值都是整数。

输入

输入数据从标准输入读取,具体格式如下:

NN MM
A1A_1 B1B_1
vdots\\vdots
AMA_M BMB_M

输出

打印答案。如果无法从城市 11 到达城市 NN,则打印 00

示例输入 1

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

示例输出 1

2

从城市 11 到城市 44 需要的最短时间是 22 小时,有两条路径可以达到:1to2to41 \\to 2 \\to 41to3to41 \\to 3 \\to 4

示例输入 2

4 3
1 3
2 3
2 4

示例输出 2

1

从城市 11 到城市 44 需要的最短时间是 33 小时,有一条路径可以达到:1to3to2to41 \\to 3 \\to 2 \\to 4

示例输入 3

2 0

示例输出 3

0

无法从城市 11 到达城市 22,在这种情况下应该打印 00

示例输入 4

7 8
1 3
1 4
2 3
2 4
2 5
2 6
5 7
6 7

示例输出 4

4