#CF2053E. 灵活的毛虫序列
灵活的毛虫序列
E. 灵活的毛虫序列
时间限制:每个测试点 秒 内存限制:每个测试点 兆字节
无尽轮回的七日 ——r-906, Panopticon
有一棵包含 个顶点的树。我们用整数对 (满足 且 )表示一条毛虫: 它的头在顶点 ,尾在顶点 ,它支配着从 到 的简单路径上的所有顶点(包括 和 )。 的毛虫序列定义为:仅由这条简单路径上的顶点组成,并按照到 的距离升序排列得到的序列。
Nora 和 Aron 轮流移动这条毛虫,Nora 先手。 两人都采用最优策略:
- 优先让自己获胜;
- 若无法获胜,则会尽力阻止对方获胜(最终游戏平局)。
移动规则
- Nora 的回合: 必须选一个与当前头 相邻、且不被当前毛虫支配的顶点 ,将整条毛虫向 方向移动一条边。
- Aron 的回合: 必须选一个与当前尾 相邻、且不被当前毛虫支配的顶点 ,将整条毛虫向 方向移动一条边。
两人的可移动方式不同。
胜负判定
- 每当 是叶子时,Nora 获胜。
- 每当 是叶子时,Aron 获胜。
- 若初始时 都是叶子,或游戏进行 轮仍未结束,则结果为平局。
题目保证:只要游戏未结束,Nora 一定能选出合法的 ,Aron 也一定能选出合法的 。
定义:
- 更形式化地说:设当前毛虫序列为 ,移动后新序列为 ,其中 表示从 到 的简单路径上的下一个顶点。
- 树中一个顶点是叶子当且仅当其度数为 。
- 因此只要游戏未结束,Nora 永远有合法的 可选,Aron 同理。
问题
请统计满足 且 的整数对 的数量,使得: 以 作为初始毛虫时,Aron 获胜。
输入格式
每个测试包含多组测试数据。 第一行一个整数 ()—— 测试数据组数。
每组测试数据:
- 第一行一个整数 ()—— 树的顶点数。
- 接下来 行,每行两个整数 (),表示 与 之间有一条边。
- 保证输入是一棵合法的树。
保证所有测试用例的 之和不超过 。
输出格式
对每组测试用例,输出一行一个整数,表示满足条件的 对数。
样例输入
5
2
1 2
5
1 2
1 3
2 4
2 5
12
1 6
11 2
4 8
12 3
2 7
6 12
8 1
2 3
5 12
9 2
10 3
10
1 2
2 3
3 4
4 5
5 6
4 7
6 8
4 9
4 10
25
1 16
11 22
6 14
3 1
20 14
23 17
25 19
10 11
3 18
10 6
2 21
4 5
11 12
4 9
9 13
8 6
6 1
3 7
8 19
10 24
15 13
1 2
3 4
17 8
样例输出
0
6
40
27
171
样例解释
-
第一个测试用例: 所有可能毛虫为 和 。初始时 都是叶子,结果均为平局,因此答案为 。
-
第二个测试用例: 能让 Aron 获胜的毛虫为: ,共 对。
举例:
- 毛虫 : 不是叶子,但 是叶子,因此 Aron 直接获胜。
- 毛虫 : 不是叶子, 也不是叶子。Nora 第一步可以向 移动,毛虫变为 ,此时 是叶子,Nora 获胜,因此该 不计入答案。