Spoj 10707 Count on a tree II

https://blog.csdn.net/qq_39759315/article/details/88553210?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3

给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v),你需要回答u xor lastans和v这两个节点间有多少种不同的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。

Input

第一行两个整数N,M。
第二行有N个整数,其中第i个整数表示点i的权值。
后面N-1行每行两个整数(x,y),表示点x到点y有一条边。
最后M行每行两个整数(u,v),表示一组询问。


数据范围是N<=40000 M<=100000 点权在int范围内
Output


M行,表示每个询问的答案。

Sample Input

8 2

105 2 9 3 8 5 7 7

1 2

1 3

1 4

3 5

3 6

3 7

4 8

2 5

3 8

Sample Output

4

4

原文地址:https://www.cnblogs.com/cutemush/p/12851104.html