题目描述
给定 n 个点以及每个点的权值,要你处理接下来的 m 个操作。
操作有四种,操作从 0 到 3 编号。点从 1 到 n 编号。
0 x y
代表询问从 x 到 y 的路径上的点的权值的 xor 和。若路径不存在输出 −1。
1 x y
代表连接 x 到 y,若 x 到 y 已经联通则无需连接。
2 x y
代表删除边 (x,y),不保证边 (x,y) 存在。
3 x y
代表将点 x 上的权值变成 y。
输入格式
第一行两个整数,分别为 n (1≤n≤150,000) 和 m (1≤m≤300,000),代表点数和操作数。
接下来 n 行,每行一个整数,整数在 [1,109] 内,代表每个点的权值。
然后有 m 行,每行三个整数,分别代表操作类型和操作所需的量。
输出格式
对于每一个 0 号操作,你须输出一行一个整数,表示 x 到 y 的路径上点权的 xor 和。若不存在输出 −1。
样例数据
样例 1 输入
3 3
1
2
3
1 1 2
0 1 2
0 1 1
样例 1 输出
3
1
样例 2 输入
5 14
114
514
19
19
810
1 1 2
0 1 2
2 1 2
1 1 2
1 2 3
2 1 3
1 1 3
1 4 5
1 2 5
0 3 5
0 3 4
3 5 233333
0 1 5
0 2 5
样例 2 输出
624
315
296
232709
232823
样例 3 输入
10 50
44
61
37
67
60
1
68
68
70
69
1 8 2
1 5 3
1 2 1
1 9 8
1 1 1
1 3 2
1 2 1
1 8 2
1 3 1
1 1 1
0 10 6
3 9 98
3 2 35
0 9 7
3 6 36
1 9 1
0 10 6
1 3 1
1 4 1
0 7 6
3 1 39
3 7 38
1 8 3
0 4 1
3 1 51
1 8 1
1 2 1
1 4 1
1 4 2
1 8 1
1 10 8
2 4 1
0 6 5
3 8 57
2 5 1
1 9 2
2 8 6
0 10 1
0 4 1
2 4 1
3 6 96
0 6 2
0 3 1
1 1 1
3 5 50
1 5 1
0 3 1
2 6 1
2 5 1
1 10 9
样例 3 输出
-1
-1
-1
-1
100
-1
108
-1
-1
53
53