#arc090c. [arc090_c]Avoiding Collision

[arc090_c]Avoiding Collision

问题描述

我们有一个具有NN个顶点和MM条边的图,图上有两个人:高桥和青木。

ii条边连接顶点UiU_i和顶点ViV_i。不考虑方向和穿越边的人(高桥或青木),穿越这条边需要DiD_i分钟。

高桥从顶点SS出发,青木从顶点TT出发,同时出发。高桥前往顶点TT,青木前往顶点SS,两者都选择最短时间的路径。计算高桥和青木选择最短路径的对数,使得他们在旅行过程中不会相遇(在顶点或边上),结果取模109+710^9 + 7

约束条件

  • 1N1000001 \leq N \leq 100000
  • 1M2000001 \leq M \leq 200000
  • 1S,TN1 \leq S, T \leq N
  • STS \neq T
  • 1Ui,ViN1 \leq U_i, V_i \leq N (1iM1 \leq i \leq M)
  • 1Di1091 \leq D_i \leq 10^9 (1iM1 \leq i \leq M)
  • 如果 iji \neq j,则 (Ui,Vi)(Uj,Vj)(U_i, V_i) \neq (U_j, V_j)(Ui,Vi)(Vj,Uj)(U_i, V_i) \neq (V_j, U_j)
  • UiViU_i \neq V_i (1iM1 \leq i \leq M)
  • DiD_i 是整数。
  • 给定的图是连通的。

输入

从标准输入读取输入。数据格式如下:

NN MM SS TT U1U_1 V1V_1 D1D_1 U2U_2 V2V_2 D2D_2 : UMU_M VMV_M DMD_M

输出

输出答案。


示例输入 1

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

示例输出 1

2

有两种满足条件的最短路径选择方式:

  • 高桥选择路径 1231 \rightarrow 2 \rightarrow 3,青木选择路径 3413 \rightarrow 4 \rightarrow 1
  • 高桥选择路径 1431 \rightarrow 4 \rightarrow 3,青木选择路径 3213 \rightarrow 2 \rightarrow 1

示例输入 2

3 3
1 3
1 2 1
2 3 1
3 1 2

示例输出 2

2

示例输入 3

3 3
1 3
1 2 1
2 3 1
3 1 2

示例输出 3

2

示例输入 4

8 13
4 2
7 3 9
6 2 3
1 6 4
7 6 9
3 8 9
1 2 2
2 8 12
8 6 9
2 5 5
4 2 18
5 3 7
5 1 515371567
4 8 6

示例输出 4

6