问题2722--灵树净化仪式

2722: 灵树净化仪式

[命题人 : ]
时间限制 : 2 sec  内存限制 : 256 MB

提交

题目描述

在一片古老的森林深处,有一棵巨大的灵树。
灵树共有 n 个节点,每个节点都储存着不同强度的“灵能值”。
随着时间推移,灵能逐渐紊乱,如果不及时净化,整棵灵树将失去力量。

净化方式很特殊:
你可以对灵树中的任意一个节点施放“灵能转换咒”。
咒语会对该节点及其全部子节点生效,使它们的灵能全部与一个整数 x 进行按位异或。
但咒语越强力,消耗越高;节点的子树越大,总消耗也越大。

你的任务是:设计最省力的净化方案,把所有节点的灵能都变成 0。

具体规则如下:
给定一棵以节点 1 为根、包含 n 个节点的树。
每个节点 i 初始灵能值为 a_i(非负整数)。

你可以进行若干次操作。一次操作为:
  1. 选择一个节点 u;
  2. 选择一个非负整数 x;
  3. 将节点 u 及其整个子树内所有节点的灵能值变为原值按位异或 x;
  4. 本次操作的消耗为:size[u] * x,其中 size[u] 为以 u 为根的子树大小(节点数量)。
你需要使所有节点灵能值最终都变为 0,并使总消耗最小。

输入

第一行:整数 n (2 <= n <= 10^5)。
第二行:n 个整数 a_1 a_2 ... a_n (0 <= a_i < 2^30)。
第三行:n-1 个整数,分别表示节点 2, 3, ..., n 的父节点编号 (满足 fa_i < i)。
输入保证这些边组成一棵以 1 为根的树。

输出

输出使灵树全体节点灵能变为 0 的最小总消耗。

样例输入 Copy

8
0 1 2 34 56 78 910 1112
1 1 2 2 3 4 4

样例输出 Copy

2333

提示

[样例输入 2]
3
1000000000 500000000 250000000
1 2

[样例输出 2]
4608201600