#CF375D. Tree and Queries
Tree and Queries
markdown
D. 树与查询
| 项目 | 说明 |
|---|---|
| 时间限制 | 秒 |
| 内存限制 | MB |
| 输入 | stdin |
| 输出 | stdout |
你有一棵包含 个顶点的有根树。树的每个顶点都有某种颜色。我们将树的顶点编号为 到 ,并用 表示顶点 的颜色。树的根是编号为 的顶点。
本题需要回答 个查询。每个查询由两个整数 和 描述。对于查询 ,其答案是:在顶点 的子树中,出现次数至少为 的颜色种类数。
有根树的定义可参考以下链接:
http://en.wikipedia.org/wiki/Tree_(graph_theory)
输入
第一行包含两个整数 和 (;)。
第二行包含一个整数序列 ()。
接下来的 行描述树的边。第 行包含两个整数 (;),表示树中一条边连接的两个顶点。
接下来的 行包含查询。第 行包含两个整数 (;)。
输出
输出 个整数,按查询在输入中出现的顺序依次输出每个查询的答案。
样例
样例输入 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
注
在以 为根的树中,顶点 的子树定义为顶点集合 $\{u : \text{dist}(r, v) + \text{dist}(v, u) = \text{dist}(r, u)\}$,其中 表示顶点 和 之间最短路径的长度(按边数计算)。