CF375D.Tree and Queries
普及/提高-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You have a rooted tree consisting of n vertices. Each vertex of the tree has some color. We will assume that the tree vertices are numbered by integers from 1 to n. Then we represent the color of vertex v as c__v. The tree root is a vertex with number 1.
In this problem you need to answer to m queries. Each query is described by two integers v__j, k__j. The answer to query v__j, k__j is the number of such colors of vertices x, that the subtree of vertex v__j contains at least k__j vertices of color x.
You can find the definition of a rooted tree by the following link: http://en.wikipedia.org/wiki/Tree_(graph_theory).
你有一棵包含 n 个顶点的有根树。树中每个顶点均具有某种颜色。我们假设树的顶点编号为 1 到 n 的整数。顶点 v 的颜色记为 cv。树的根节点为编号为 1 的顶点。
本题中,你需要回答 m 个查询。每个查询由两个整数 vj、kj 描述。对于查询 (vj,kj),其答案为:满足“以顶点 vj 为根的子树中,颜色为 x 的顶点数量不少于 kj”这一条件的颜色 x 的种类数。
有根树的定义参见如下链接:http://en.wikipedia.org/wiki/Tree_(graph_theory)。
输入格式
The first line contains two integers n and m (2 ≤ n ≤ 105; 1 ≤ m ≤ 105). The next line contains a sequence of integers _c_1, _c_2, ..., c__n (1 ≤ c__i ≤ 105). The next n - 1 lines contain the edges of the tree. The i-th line contains the numbers a__i, b__i (1 ≤ a__i, b__i ≤ n; a__i ≠ b__i) — the vertices connected by an edge of the tree.
Next m lines contain the queries. The j-th line contains two integers v__j, k__j (1 ≤ v__j ≤ n; 1 ≤ k__j ≤ 105).
第一行包含两个整数 n 和 m(2≤n≤105;1≤m≤105)。
下一行包含一个整数序列 c1,c2,…,cn(1≤ci≤105)。
接下来的 n−1 行描述树的边。第 i 行包含两个数 ai,bi(1≤ai,bi≤n;ai=bi),表示树中一条边所连接的两个顶点。
接下来的 m 行为查询。第 j 行包含两个整数 vj,kj(1≤vj≤n;1≤kj≤105)。
输出格式
Print m integers — the answers to the queries in the order the queries appear in the input.
输出 m 个整数——即各查询的答案,按输入中查询出现的顺序输出。
输入输出样例
输入#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
说明/提示
A subtree of vertex v in a rooted tree with root r is a set of vertices {u : dist(r, v) + dist(v, u) = dist(r, u)}. Where dist(x, y) is the length (in edges) of the shortest path between vertices x and y.
以 r 为根的有根树中,顶点 v 的子树是指满足 dist(r,v)+dist(v,u)=dist(r,u) 的所有顶点 u 构成的集合。其中 dist(x,y) 表示顶点 x 与 y 之间最短路径的长度(以边数计)。
输入解题思路,AI测评打分。不知道怎么写?