#zXSCSlydlt60x6204. 黑暗城堡

黑暗城堡

好的,这是整理好的题面,不含解题思路,只包含样例解释。


题目描述

在顺利攻破 Lord lsp 的防线之后,lqr 一行人来到了 Lord lsp 的城堡下方。

Lord lsp 黑化之后虽然拥有强大的超能力(能够用意念力制造建筑物),但智商并没有增加。
现在 lqr 已经搞清楚黑暗城堡有 NN 个房间,MM 条可以建造的双向通道,以及每条通道的长度。

lqr 深知 Lord lsp 的想法:为了避免每次都要琢磨两个房间之间的最短路径,Lord lsp 一定会把城堡修建成树形的(即 N1N-1 条通道构成一棵树)。

而且,为了尽量提高自己的移动效率,Lord lsp 要求实际的城堡满足下面的条件:
D[i]D[i] 为如果所有的通道都被修建,第 ii 号房间与第 11 号房间的最短路径长度;
S[i]S[i]实际修建的树形城堡中第 ii 号房间与第 11 号房间的路径长度;
要求对于所有整数 ii,有 S[i]=D[i]S[i]=D[i] 成立。

为了打败 Lord lsp,lqr 想知道有多少种不同的城堡修建方案(满足上述条件的树形城堡)。
保证至少存在一种可行的城堡修建方案。

你需要输出答案对 23112^{31}-1 取模之后的结果。


输入格式

第一行有两个整数 NNMM
之后 MM 行,每行三个整数 X,YX, YLL,表示可以修建 XXYY 之间的一条长度为 LL 的通道。

输出格式

一个整数,表示答案对 23112^{31}-1 取模之后的结果。

数据范围

  • 2N10002 \le N \le 1000
  • N1MN(N1)2N-1 \le M \le \dfrac{N(N-1)}{2}
  • 1L1001 \le L \le 100

输入样例

3 3
1 2 2
1 3 1
2 3 1

输出样例

2

样例解释

N=3N=3 个房间,M=3M=3 条可能的通道:

  1. 房间 1 和房间 2,长度 2
  2. 房间 1 和房间 3,长度 1
  3. 房间 2 和房间 3,长度 1

先求所有通道都建时的最短路径 D[i]D[i]

  • D[1]=0D[1] = 0(自己到自己的最短路径为 0)
  • D[2]D[2]:路径 1→2 长度 2,路径 1→3→2 长度 1+1=2,所以 D[2]=2D[2]=2
  • D[3]D[3]:路径 1→3 长度 1,所以 D[3]=1D[3]=1

要修建树形城堡,且 S[i]=D[i]S[i]=D[i]
树必须满足从 1 出发到各点的距离等于 D[i]D[i]

可能的树(3 个点,选 2 条边):

  1. 边 (1,2) 长度 2 和边 (1,3) 长度 1:
    此时 S[2]=2S[2]=2(等于 D[2]D[2]),S[3]=1S[3]=1(等于 D[3]D[3]),成立。
  2. 边 (1,3) 长度 1 和边 (3,2) 长度 1:
    此时 S[3]=1S[3]=1S[2]=1+1=2S[2]=1+1=2,成立。
  3. 边 (1,2) 长度 2 和边 (2,3) 长度 1:
    此时 S[2]=2S[2]=2,但 S[3]=2+1=3D[3]=1S[3]=2+1=3 \neq D[3]=1,不满足条件。

所以满足条件的方案有 2 种,输出 2。


输出 2