#CF1994E. Wooden Game
Wooden Game
伐木游戏
时间限制:2 秒
空间限制:256 MB
给定一个有 棵有根树的森林∗。伐木工 Timofey 想要砍伐整个森林,他可以执行以下操作:
- 选择任意一棵树的任意顶点的一个子树†,并将其从树中移除。
Timofey 喜欢按位运算,他希望他所移除的子树的大小之按位或尽可能大。帮助他求出能获得的最大结果。
∗ 树是一张无环、无自环、无重边的连通图。在有根树中,选定的顶点称为根。森林是一棵或多棵树的集合。
† 一个顶点 的子树是这样的顶点集合:这些顶点到根的路径上都包含 ,包括 本身。
输入格式
每个测试包含多个测试用例。第一行包含一个整数 ()—— 测试用例数。接下来是各个测试用例的描述。
每个测试用例的第一行包含一个整数 ()—— 森林中树的数量。
接下来是每棵树的描述:
- 第一行包含一个整数 ()—— 树的大小。树的顶点编号为 到 ,根顶点为 。
- 第二行包含 个整数 (),其中 是顶点 的父节点。
保证所有输入数据的 与 之和不超过 。
输出格式
对于每个测试用例,输出一个整数 —— 能获得的最大结果。
样例输入
3
1
1
2
4
1 2 2
6
1 1 3 1 3
1
10
1 2 2 1 1 5 7 6 4
样例输出
1
7
10
样例解释
第二个测试用例:两棵树如图所示。
第一次操作移除整棵第二棵树(大小为 )。

第二次操作从第一棵树中移除顶点 的子树(大小为 )。

第三次操作移除整棵第一棵树(大小为 )。 结果为 ( 表示按位或)。
第三个测试用例:需要移除整棵树(大小为 )。