1. 异或和
- 前置知识点:树状数组,线段树,DFS 序。
1. 问题描述
给一棵含有 n n n 个结点的有根树,根结点为 1 1 1,编号为 i i i 的点有点权 a i a_i ai( i ∈ [ 1 , n ] i \in [1,n] i∈[1,n])。现在有两种操作,格式如下:
- 1 x y 1\ x\ y 1 x y:该操作表示将点 x x x 的点权改为 y y y。
- 2 x 2\ x 2 x:该操作表示查询以结点 x x x 为根的子树内的所有点的点权的异或和。
现有长度为 m m m 的操作序列,请对于每个第二类操作给出正确的结果。
2 .输入格式
输入的第一行包含两个正整数 n , m n,m n,m,用一个空格分隔。
第二行包含 n n n 个整数 a 1 , a 2 , … , a n a_1,a_2,\ldots,a_n a1,a2,…,an,相邻整数之间使用一个空格分隔。
接下来 n − 1 n-1 n−1 行,每行包含两个正整数 u i , v i u_i,v_i ui,vi,表示结点 u i u_i ui 和 v i v_i vi 之间有一条边。
接下来 m m m 行,每行包含一个操作。
3. 输出格式
输出若干行,每行对应一个查询操作的答案。
4. 样例输入
4 4
1 2 3 4
1 2
1 3
2 4
2 1
1 1 0
2 1
2 2
5. 样例输出
4
5
6
6. 评测用例规模与约定
对于 30 30 30% 的评测用例, n , m ≤ 1000 n,m \leq 1000 n,m≤1000;
对于所有评测用例, 1 ≤ n , m ≤ 100000 1 \leq n,m \leq 100000 1≤n,m≤100000, 0 ≤ a i , y ≤ 100000 0 \leq a_i,y \leq 100000 0≤a