#P17134. 链上 Nim
链上 Nim
1010. 链上 Nim
题目描述
在一片古老遗迹的深处,两位旅人发现了一排排风化的石块,相邻的石块之间用生锈的金属环连接。每一排都形成一条链,而墙上模糊的刻文将这种游戏称为「链上 Nim」。
一条长度为 的链包含 个顶点和 条连边。玩家 先手,之后两位玩家轮流行动。在每一回合,当前玩家选择一条链,并按照固定的游戏规则在其中进行一次合法操作。这是一个公平组合游戏:可以选择的操作只取决于当前局面,而与轮到了哪位玩家无关。无法继续行动的玩家判负。
可惜,刻文中记载具体操作规则的部分已经损坏。两位旅人只知道,根据 Sprague--Grundy 定理,每条链仍然有唯一的非负整数 SG 值。对于每个可能的链长 ,记一条该长度链的 SG 值为 。
一场游戏可以在若干条非空、彼此独立的链上同时进行。每次行动只会影响玩家选中的那一条链。因此,若一个局面中各条链的长度为 ,那么整个局面的 SG 值等于各条链 SG 值的 Nim 和,也就是按位异或和:
$$G_{L_1}\mathbin{\mathtt{xor}}G_{L_2}\mathbin{\mathtt{xor}}\cdots\mathbin{\mathtt{xor}}G_{L_C}.$$一位新人曾经旁观了 个历史局面。对于每场过去的游戏,他记下了局面中所有链的长度,并向熟悉游戏的玩家询问了整个局面的 SG 值。然而,他并不知道每个 分别是多少。
现在,他又遇到了 个新局面,并想知道:
「只使用笔记中的历史记录,能否唯一确定这个局面的 SG 值?」
如果根据历史记录能够唯一确定这个局面的 SG 值,就输出这个值;如果无法确定,就输出 。
输入格式
第一行包含一个整数 (),表示测试用例的数量。
接下来依次描述 组测试用例。对于每组测试用例:
第一行包含一个整数 (),表示历史局面数量。
接下来的 个历史局面均恰好用两行描述:
- 第一行包含两个整数 和 (,),分别表示链的数量和该局面的已知 SG 值。
- 第二行恰好包含 个整数 (),表示以顶点数计算的各条链的长度。
接下来一行包含一个整数 (),表示询问数量。
接下来的 个询问均恰好用两行描述:
- 第一行包含一个整数 (),表示链的数量。
- 第二行恰好包含 个整数 (),表示以顶点数计算的各条链的长度。
链长可以以任意顺序给出,也可以重复。所有被描述的局面都不为空。
输出格式
对于每组测试用例中的每个询问,输出一行一个整数。
样例输入
1
2
2 5
1 2
2 6
2 3
5
2
1 2
2
1 3
1
1
2
4 4
1
4
样例输出
5
3
-1
0
-1
来源:2026杭电多校-测试专用(电子科大) 原题链接:http://acm.hdu.edu.cn/contest/problem_show.php?cid=1233&pid=1010