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).

你有一棵包含 nn 个顶点的有根树。树中每个顶点均具有某种颜色。我们假设树的顶点编号为 11 到 nn 的整数。顶点 vv 的颜色记为 cvc_v。树的根节点为编号为 11 的顶点。

本题中,你需要回答 mm 个查询。每个查询由两个整数 vjv_j、kjk_j 描述。对于查询 (vj,kj)(v_j, k_j),其答案为:满足“以顶点 vjv_j 为根的子树中,颜色为 xx 的顶点数量不少于 kjk_j”这一条件的颜色 xx 的种类数。

有根树的定义参见如下链接: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).

第一行包含两个整数 nn 和 mm(2≤n≤1052 \leq n \leq 10^5;1≤m≤1051 \leq m \leq 10^5)。
下一行包含一个整数序列 c1,c2,…,cnc_1, c_2, \dots, c_n(1≤ci≤1051 \leq c_i \leq 10^5)。
接下来的 n−1n-1 行描述树的边。第 ii 行包含两个数 ai,bia_i, b_i(1≤ai,bi≤n1 \leq a_i, b_i \leq n;ai≠bia_i \neq b_i),表示树中一条边所连接的两个顶点。

接下来的 mm 行为查询。第 jj 行包含两个整数 vj,kjv_j, k_j(1≤vj≤n1 \leq v_j \leq n;1≤kj≤1051 \leq k_j \leq 10^5)。

输出格式

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.

以 rr 为根的有根树中,顶点 vv 的子树是指满足 dist(r,v)+dist(v,u)=dist(r,u)\text{dist}(r, v) + \text{dist}(v, u) = \text{dist}(r, u) 的所有顶点 uu 构成的集合。其中 dist(x,y)\text{dist}(x, y) 表示顶点 xx 与 yy 之间最短路径的长度(以边数计)。

输入解题思路,AI测评打分。不知道怎么写?

首页