#CF375D. Tree and Queries

Tree and Queries

markdown

D. 树与查询

项目 说明
时间限制 11
内存限制 256256 MB
输入 stdin
输出 stdout

你有一棵包含 nn 个顶点的有根树。树的每个顶点都有某种颜色。我们将树的顶点编号为 11nn,并用 cvc_v 表示顶点 vv 的颜色。树的根是编号为 11 的顶点。

本题需要回答 mm 个查询。每个查询由两个整数 vjv_jkjk_j 描述。对于查询 vj,kjv_j, k_j,其答案是:在顶点 vjv_j 的子树中,出现次数至少kjk_j 的颜色种类数。

有根树的定义可参考以下链接:
http://en.wikipedia.org/wiki/Tree_(graph_theory)

输入

第一行包含两个整数 nnmm2n1052 \le n \le 10^51m1051 \le m \le 10^5)。
第二行包含一个整数序列 c1,c2,,cnc_1, c_2, \dots, c_n1ci1051 \le c_i \le 10^5)。
接下来的 n1n-1 行描述树的边。第 ii 行包含两个整数 ai,bia_i, b_i1ai,bin1 \le a_i, b_i \le naibia_i \ne b_i),表示树中一条边连接的两个顶点。
接下来的 mm 行包含查询。第 jj 行包含两个整数 vj,kjv_j, k_j1vjn1 \le v_j \le n1kj1051 \le k_j \le 10^5)。

输出

输出 mm 个整数,按查询在输入中出现的顺序依次输出每个查询的答案。

样例

样例输入 1

8 5
1 2 2 3 3 2 3 3
1 2
1 5
2 3
2 4
5 6
5 7
5 8
1 2
1 3
1 4
2 3
5 3

样例输出 1

2
2
1
0
1

样例输入 2

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

样例输出 2

4

在以 rr 为根的树中,顶点 vv 的子树定义为顶点集合 $\{u : \text{dist}(r, v) + \text{dist}(v, u) = \text{dist}(r, u)\}$,其中 dist(x,y)\text{dist}(x, y) 表示顶点 xxyy 之间最短路径的长度(按边数计算)。