luogu#P10107. [GDKOI2023 提高组] 树

[GDKOI2023 提高组] 树

题目描述

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

QQ 次询问,对于一次询问,给定 (x,k)(x, k),设 xx 号结点的子树内(包含 xx 自身)的所有满足距离 xx 号结点不超过 kk 的结点编号为 c1,c2,...,ckc_1, c_2, . . . , c_k,则这次询问的答案为:

$$(v_{c_1} ⊕ d(c_1, x)) + (v_{c_2} ⊕ d(c_2, x)) + \cdots + (v_{c_k} ⊕ d(c_k, x)) $$

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

输入格式

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

第二行 nn 个整数表示 viv_i

第三行 n1n - 1 个整数,依次表示 22 号结点到 nn 号结点,每个结点的父亲编号 pip_i

第四行一个整数 QQ

接下来 QQ 行,每行两个整数 x,kx, k,表示一个 (x,k)(x, k) 的查询。

输出格式

输出共 QQ 行,第 ii 行一个整数表示第 ii 次询问的答案。

10
9 3 0 7 4 8 8 7 2 5
1 1 2 2 3 6 6 8 7
10
8 2
2 1
5 1
4 1
4 1
1 4
4 1
6 3
4 1
1 4
10
14
4
7
7
55
7
30
7
55

提示

对于 10% 的数据,满足 n,Q2×103n, Q ≤ 2 \times 10^3

对于 20% 的数据,满足 n,Q105n, Q ≤ 10^5

对于另外 20% 的数据,满足 pi=i1p_i = i - 1

对于另外 10% 的数据,满足 k20k ≤ 20

对于另外 20% 的数据,满足 k=nk = n

对于另外 10% 的数据,满足 vi=0v_i = 0

对于 100% 的数据,满足 1n,Q1061 ≤ n, Q ≤ 10^60v109 0 ≤ v ≤ 10^91pi<i 1 ≤ p_i < i1x,kn 1 ≤ x, k ≤ n