题号:NC50360
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld
题目描述
你知道黑暗城堡有N个房间,M条可以制造的双向通道,以及每条通道的长度。
城堡是树形的并且满足下面的条件:
设

为如果所有的通道都被修建,第i号房间与第1号房间的最短路径长度;
而

为实际修建的树形城堡中第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
说明
一共有4个房间,6条道路,其中1号和2号,1号和3号,1号和4号,2号和3号,2号和4号,3号和4号房间之间的通道长度分别为1,2,3,1,2,1。
而不同的城堡修建方案数对
取模之后的结果为6。
备注:
对于全部数据,
,
,
。