#L3303. 「联合省选 2020 A」树

    ID: 4090 传统题 3500ms 256MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>搜索DFS动态规划树形DP其他位运算树上差分

「联合省选 2020 A」树

#3303. 「联合省选 2020 A」树

题目描述

给定一棵 nn 个结点的有根树 TT,结点从 11 开始编号,根结点为 11 号结点,每个结点有一个正整数权值 viv_i

xx 号结点的子树内(包含 xx 自身)的所有结点编号为 c1,c2,,ckc_1, c_2, \dots, c_k,定义 xx 的价值为:

$$\text{val}(x) = (v_{c_1} + d(c_1, x)) \oplus (v_{c_2} + d(c_2, x)) \oplus \cdots \oplus (v_{c_k} + d(c_k, x)) $$

其中 d(x,y)d(x, y) 表示树上 xx 号结点与 yy 号结点间唯一简单路径所包含的边数,d(x,x)=0d(x, x) = 0\oplus 表示异或运算。

请你求出 i=1nval(i)\sum_{i=1}^n \text{val}(i) 的结果。


输入格式

第一行一个正整数 nn 表示树的大小。

第二行 nn 个正整数表示 viv_i

接下来一行 n1n-1 个正整数,依次表示 22 号结点到 nn 号结点,每个结点的父亲编号 pip_i


输出格式

仅一行一个整数表示答案。


样例

输入

5
5 4 1 2 3
1 1 2 2

输出

12

解释

  • $\text{val}(1) = (5 + 0) \oplus (4 + 1) \oplus (1 + 1) \oplus (2 + 2) \oplus (3 + 2) = 3$
  • $\text{val}(2) = (4 + 0) \oplus (2 + 1) \oplus (3 + 1) = 3$
  • val(3)=(1+0)=1\text{val}(3) = (1 + 0) = 1
  • val(4)=(2+0)=2\text{val}(4) = (2 + 0) = 2
  • val(5)=(3+0)=3\text{val}(5) = (3 + 0) = 3
  • 和为 1212

数据范围与提示

  • 10%10\% 的数据:1n25011 \le n \le 2501
  • 40%40\% 的数据:1n1525011 \le n \le 152501
  • 另有 20%20\% 的数据:所有 pi=i1p_i = i - 1 (2in2 \le i \le n)
  • 另有 20%20\% 的数据:所有 vi=1v_i = 1 (1in1 \le i \le n)
  • 100%100\% 的数据:1n,vi525010,1pin1 \le n, v_i \le 525010, 1 \le p_i \le n