题号:NC259921
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
大学生
诗情小姐姐 最近遇到了困难,需要你去帮助她。
她遇到了一个包含

个节点的树(保证

为偶数),王老师告诉她要将

个点两两配对,同时将它们之间的路径上的边覆盖。
可惜的是,这道题并不那么简单。记
)
表示一种配对方案中没有被覆盖的边的数量,其中

是一种配对方案。
你的任务是对于所有
%3Dt(0%5Cleq%20t%5Cleq%20n-1))
,输出满足条件的配对方案

的数量。
同时,为了增加题目难度,每条边都有一种属性
)
,一种合法的配对方案中被覆盖的边必须包含所有属性。
请你帮帮
诗情小姐姐 ,否则她会陷入无限的循环,回到开端。
答案对

取模。
输入描述:
第一行输入两个数
。
接下来
行每行输入三个整数
,表示
之间有属性为
的边。
保证输入是一颗树。
输出描述:
输出
行,第
行表示
时的答案。
示例1
说明
合法的配对方案为
%2C(2%2C4)%5C%7D)
,
%2C(3%2C4)%5C%7D)
,
%2C(2%2C3)%5C%7D)
,其中没有被覆盖的边的数目都是

。
示例3
输入
复制
20 4
1 2 1
2 3 1
1 4 4
1 5 3
1 6 1
5 7 3
6 8 2
7 9 3
8 10 4
5 11 2
2 12 3
9 13 2
1 14 4
5 15 3
11 16 1
5 17 2
3 18 1
7 19 2
17 20 4
输出
复制
494779248
137149284
20418564
2178702
187770
14412
1026
66
3
0
0
0
0
0
0
0
0
0
0
0
备注:
对于所有数据,
,
,
,且
为偶数。