黑暗城堡
题号:NC50360
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

你知道黑暗城堡有N个房间,M条可以制造的双向通道,以及每条通道的长度。
城堡是树形的并且满足下面的条件:
D_i为如果所有的通道都被修建,第i号房间与第1号房间的最短路径长度;
S_i为实际修建的树形城堡中第i号房间与第1号房间的路径长度;
要求对于所有整数i(),有成立。
你想知道有多少种不同的城堡修建方案。当然,你只需要输出答案对取模之后的结果就行了。

输入描述:

输入格式
第一行为两个由空格隔开的整数N,M;
第二行到第M+1行为3个由空格隔开的整数x,y,l:表示x号房间与y号房间之间的通道长度为l。

输出描述:

一个整数:不同的城堡修建方案数对取模之后的结果。
示例1

输入

复制
4 6
1 2 1
1 3 2
1 4 3
2 3 1
2 4 2
3 4 1

输出

复制
6

说明

一共有4个房间,6条道路,其中1号和2号,1号和3号,1号和4号,2号和3号,2号和4号,3号和4号房间之间的通道长度分别为1,2,3,1,2,1。
而不同的城堡修建方案数对2^{31}-1取模之后的结果为6。

备注:

对于全部数据,