#P613. 树上异或

树上异或

题目描述

给定一棵由nn个结点构成的树,结点编号为11nn,其中11号点为树根,第ii个点的点权为aia_i

对于整棵树的第kk次操作,我们会从根结点开始进行下面的操作:

对于结点 uu,计算其子树中每个节点 vv 在前一次操作后的权值 Av(k1)A_{v}^{(k-1)}的异或和,并记为 uu 在这一次操作后的权值 Au(k)A_u^{(k)},对于结点 uu 的每个儿子,递归进行上述计算。

现对于给定的 qq 次询问,每次询问一个操作数 mm ,请你求出 mm 次操作后, 根结点的值(即A1(m)A_1^{(m)} 的值)。

输入格式

输入第一行:两个正整数n,qn,q 输入第二行:nn个正整数a1,a2,...,ana_1,a_2,...,a_n,分别表示一开始每个点的点权。 接下来n1n-1行,每行两个正整数ui,viu_i,v_i,表示第ii条边连接ui,viu_i,v_i两点。 最后一行,qq个正整数,分别表示询问的操作数mim_i

输出格式

输出共一行:qq个正整数,分别表示每次询问的mim_i轮操作后,根结点的值。

4 3
1 5 8 7
2 3
1 4
1 2
1 2 3
11 9 3

数据范围

  • 对于30%30\%的数据,1n,q,mi1001\leq n,q,m_i \leq 100

  • 对于60%60\%的数据,1n1000,1n×q1061\leq n \leq 1000, 1\leq n \times q \leq 10^6

  • 对于100%100\%的数据,$1\leq n,q \leq 2\times 10^5, 1\leq m_i,a_i \leq 10^{18}$