#P13874. [蓝桥杯 2024 省 Java/Python A] 最大异或结点

[蓝桥杯 2024 省 Java/Python A] 最大异或结点

题目描述

小蓝有一棵树,树中包含 NN 个结点,编号为 0,1,2,,N10, 1, 2, \cdots, N-1,其中每个结点上都有一个整数 XiX_i。他可以从树中任意选择两个不直接相连的结点 aabb 并获得分数 XaXbX_a \oplus X_b,其中 \oplus 表示按位异或操作。

请问小蓝可以获得的最大分数是多少?

输入格式

输入的第一行包含一个整数 NN,表示有 NN 个结点。

第二行包含 NN 个整数 X0,X1,,XN1X_0, X_1, \cdots, X_{N-1},相邻整数之间使用一个空格分隔。

第三行包含 NN 个整数 F0,F1,,FN1F_0, F_1, \cdots, F_{N-1},相邻整数之间使用一个空格分隔,其中第 ii 个整数表示 ii 的父结点编号,Fi=1F_i = -1 表示结点 ii 没有父结点。

输出格式

输出一行包含一个整数表示答案。

5
1 0 5 3 4
-1 0 1 0 1
7

提示

【样例说明】

选择编号为 3 和 4 的结点,x3=3x_3 = 3x4=4x_4 = 4,他们的值异或后的结果为 34=73 \oplus 4 = 7

【评测用例规模与约定】

对于 50%50\% 的评测用例,1N10001 \leq N \leq 1000

对于所有评测用例,1N1051 \leq N \leq 10^50Xi23110 \leq X_i \leq 2^{31} - 11FiN-1 \leq F_i \leq N