#C1002. 树上巡路
树上巡路
题目描述
有 个地点,编号为 ,这些地点通过 条双向道路连通。
记两个地点 之间的道路条数为 ,现在要安排一次长度为的巡路顺序
从出发,结束,满足每个地点恰好经过一次。
巡路时要求对于任意 ,都要满足:
给定一个正整数 。如果一个巡路顺序对任意还满足:
那么称它是一个合法的 -巡路顺序。
记 为合法的 -巡路顺序数量。你需要对每个询问的 ,输出 对 取模后的值。
输入格式
每个测试文件包含多个测试用例。
第一行包含一个整数 ,表示测试用例数。
对于每个测试用例:
- 第一行包含两个整数 ;
- 接下来 行,每行包含两个整数 ,表示 与 之间有一条边;
- 最后一行包含 个整数 。
输出格式
对于每个测试用例,输出一行 个空格分隔的整数,第 个整数为
样例1输入
2
3 3
1 2
1 3
1 2 3
6 3
1 2
1 3
3 4
3 5
3 6
1 2 3
样例1输出
0 2 2
0 6 12
样例1解释
第一组数据中,离 号地点最近的是地点 本身,地点 到地点 的距离相同。因此巡路顺序只能先访问 ,再访问 的某种顺序。
当 时,最后两次访问的地点之间距离为 ,没有顺序合法;当 时, 与 都合法,答案为 。
第二组数据中,同样距离的地点有多种排列方式,但相邻访问地点之间的距离会随排列变化,所以 和 的答案不同。
样例2
见选手目录下的 layers/layers2.in 与 layers/layers2.ans。
该样例满足子任务 的约束条件。
样例3
见选手目录下的 layers/layers3.in 与 layers/layers3.ans。
该样例满足子任务 的约束条件。
样例4
见选手目录下的 layers/layers4.in 与 layers/layers4.ans。
该样例满足子任务 的约束条件。
样例5
见选手目录下的 layers/layers5.in 与 layers/layers5.ans。
该样例满足子任务 的约束条件。
样例6
见选手目录下的 layers/layers6.in 与 layers/layers6.ans。
该样例满足子任务 的约束条件。
数据范围
对于所有测试数据,均有:
- ;
- ;
- ;
- 每个测试文件中所有测试用例的 之和不超过 ;
- 输入的 条边构成一棵树。
| 子任务编号 | 分值 | 约束条件 |
|---|---|---|
| 且 | ||
| 且 | ||
| 无额外限制 |
本题采用捆绑测试。每个子任务内的测试点必须全部通过,才能获得该子任务分数。