P10107 [GDKOI2023 提高组] 树
题目描述
给定一棵 $n$ 个结点的有根树 $T$,结点从 $1$ 开始编号,根结点为 $1$ 号结点,每个结点有一个正整数权值 $v_i$。
有 $Q$ 次询问,对于一次询问,给定 $(x, k)$,设 $x$ 号结点的子树内(包含 $x$ 自身)的所有满足距离 $x$ 号结点不超过 $k$ 的结点编号为 $c_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)$ 表示树上 $x$ 号结点与 $y$ 号结点间唯一简单路径所包含的边数,$d(x, x) = 0$。$⊕$ 表示异或运算。
输入格式
第一行一个整数 $n$ 表示树的大小。
第二行 $n$ 个整数表示 $v_i$。
第三行 $n - 1$ 个整数,依次表示 $2$ 号结点到 $n$ 号结点,每个结点的父亲编号 $p_i$。
第四行一个整数 $Q$。
接下来 $Q$ 行,每行两个整数 $x, k$,表示一个 $(x, k)$ 的查询。
输出格式
输出共 $Q$ 行,第 $i$ 行一个整数表示第 $i$ 次询问的答案。
说明/提示
对于 10% 的数据,满足 $n, Q ≤ 2 \times 10^3$。
对于 20% 的数据,满足 $n, Q ≤ 10^5$。
对于另外 20% 的数据,满足 $p_i = i - 1$。
对于另外 10% 的数据,满足 $k ≤ 20$。
对于另外 20% 的数据,满足 $k = n$。
对于另外 10% 的数据,满足 $v_i = 0$。
对于 100% 的数据,满足 $1 ≤ n, Q ≤ 10^6$,$ 0 ≤ v ≤ 10^9$,$ 1 ≤ p_i < i$,$ 1 ≤ x, k ≤ n$。