GT and trees

Accepts: 0
Submissions: 7
Time Limit: 6000/3000 MS (Java/Others)
Memory Limit: 524288/524288 K (Java/Others)
问题描述
每次操作有两种:
①$0$ $x$ $y$ 把$x$点的点权改成$y$
②$1$ $x$ $y$ 询问$x$~$y$路径上出现数字最多的数的出现次数。
输入描述
第一行一个数T表示数据组数(最终测试数据$T \leq 5$且$N>100$的数据只有两组)
对于每组数据:
第一行两个数$N$、$Q$表示树的点数和询问个数。
接下来$N-1$行每行一对数$(x,y)$表示树上的一条边。
接下来一行$N$个数表示每个点的初始点权。
接下来$Q$行每行三个数,格式如上。

$1 \leq N,Q \leq 50000$,点权范围在$[1,n]$之间。

hack时建议输出最后一行的行末回车;每一行的结尾不要输出空格。
输出描述
对于每组数据的每个询问输出答案。
输入样例
1
3 4
1 2
2 3
1 1 2
1 1 2
1 2 3
0 3 1
1 1 3
输出样例
2
1
3