「CZOI-R1」三角形与树

题目背景

CaiZi 讨厌三角形,但是他喜欢树。 2024.8.15 Update:增加了一组 hack 数据。

题目描述

给定一颗有 $n$ 个点的树,节点编号为 $1\sim n$,每个点有点权,开始时点 $i$ 的点权为 $a_i$。共有 $q$ 次操作。 1. 将点 $x$ 到点 $y$ 的简单路径上的点的点权**异或** $k$。 1. 判断能否在点 $x$ 到点 $y$ 的简单路径上选 $3$ 个**不同点**,并以这 $3$ 个点的点权为边长构成**三角形**。特别的,如果无法选出 $3$ 个点,也视为不能构成**三角形**。 点 $x$ 到点 $y$ 的简单路径:点 $x$ 到点 $y$ 不重复走过任何一条边的路径。其上的所有点为这条路径上所有的点,**包括**点 $x$ 和点 $y$。 **保证任何时刻不会有任何一个点的点权为 $0$。**

输入输出格式

输入格式


第一行输入 $2$ 个整数 $n,q$,分别表示这棵树点的个数、操作的个数。 第二行输入 $n$ 个整数 $a_i$,表示开始时点 $i$ 的点权。 接下来 $n-1$ 行,每行输入 $2$ 个整数 $u,v$,表示这棵树的一条边。 接下来 $q$ 行,每行先输入 $1$ 个整数 $s$,表示操作类型。 - 若 $s=1$,则再输入 $3$ 个整数 $u,v,w$,表示一次修改操作。 - 若 $s=2$,则再输入 $2$ 个整数 $u,v$,表示一次询问操作。

输出格式


对于每次询问操作,若能满足条件输出 $1$,否则输出 $0$,无需空格或换行。

输入输出样例

输入样例 #1

5 5
1 2 3 4 5
1 2
1 3
2 4
2 5
2 1 2
2 3 4
1 3 5 4
2 2 3
2 1 5

输出样例 #1

0110

说明

**【样例解释】** 第 $1$ 次操作时简单路径上的点权少于 $3$ 个。 第 $2$ 次操作时简单路径上的点权分别为 $1,2,3,4$。 第 $3$ 次操作后点 $1\sim n$ 的点权分别为 $5,6,7,4,1$。 第 $4$ 次操作时简单路径上的点权分别为 $5,6,7$。 第 $5$ 次操作时简单路径上的点权分别为 $1,5,6$。 **【数据范围】** **本题采用捆绑测试**。 - Subtask #1($8\text{ pts}$):$n,q\le3\times10^3$。 - Subtask #2($8\text{ pts}$):保证这棵树是一朵菊花。 - Subtask #3($20\text{ pts}$):每次修改操作时 $x=y$。 - Subtask #4($24\text{ pts}$):保证这棵树是一条链。 - Subtask #5($40\text{ pts}$):无特殊性质。**依赖 Subtask #1 到 Subtask #4。** 对于 $100\%$ 的数据,$1\le u,v\le n\le10^5$,$1\le q\le10^5$,$s\in\{1,2\}$,$1\le a_i,w\le 2^{31}-1$。