CF1328E.Tree Queries

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a rooted tree consisting of nn vertices numbered from 11 to nn. The root of the tree is a vertex number 11.

A tree is a connected undirected graph with n−1n-1 edges.

You are given mm queries. The ii-th query consists of the set of kik_i distinct vertices vi[1],vi[2],…,vi[ki]v_i[1], v_i[2], \dots, v_i[k_i]. Your task is to say if there is a path from the root to some vertex uu such that each of the given kk vertices is either belongs to this path or has the distance 11 to some vertex of this path.

你将得到一棵包含 nn 个顶点(编号从 11 到 nn)的有根树,树的根节点为顶点 11。

树是一种具有 n−1n-1 条边的连通无向图。

你将收到 mm 个查询。第 ii 个查询包含一个由 kik_i 个互不相同的顶点 vi[1],vi[2],…,vi[ki]v_i[1], v_i[2], \dots, v_i[k_i] 组成的集合。你的任务是判断:是否存在一条从根节点到某个顶点 uu 的路径,使得给定的 kik_i 个顶点中的每一个,要么位于该路径上,要么与该路径上的某个顶点的距离恰好为 11。

输入格式

The first line of the input contains two integers nn and mm (2≤n≤2⋅1052 \le n \le 2 \cdot 10^5, 1≤m≤2⋅1051 \le m \le 2 \cdot 10^5) — the number of vertices in the tree and the number of queries.

Each of the next n−1n-1 lines describes an edge of the tree. Edge ii is denoted by two integers uiu_i and viv_i, the labels of vertices it connects (1≤ui,vi≤n,ui≠vi(1 \le u_i, v_i \le n, u_i \ne v_i).

It is guaranteed that the given edges form a tree.

The next mm lines describe queries. The ii-th line describes the ii-th query and starts with the integer kik_i (1≤ki≤n1 \le k_i \le n) — the number of vertices in the current query. Then kik_i integers follow: vi[1],vi[2],…,vi[ki]v_i[1], v_i[2], \dots, v_i[k_i] (1≤vi[j]≤n1 \le v_i[j] \le n), where vi[j]v_i[j] is the jj-th vertex of the ii-th query.

It is guaranteed that all vertices in a single query are distinct.

It is guaranteed that the sum of kik_i does not exceed 2⋅1052 \cdot 10^5 (∑i=1mki≤2⋅105\sum\limits_{i=1}^{m} k_i \le 2 \cdot 10^5).

输入的第一行包含两个整数 nn 和 mm(2≤n≤2⋅1052 \le n \le 2 \cdot 10^5,1≤m≤2⋅1051 \le m \le 2 \cdot 10^5)—— 分别表示树中顶点的数量和查询的数量。

接下来的 n−1n-1 行每行描述树中的一条边。第 ii 条边由两个整数 uiu_i 和 viv_i 表示,即该边所连接的两个顶点的编号(1≤ui,vi≤n1 \le u_i, v_i \le n,且 ui≠viu_i \ne v_i)。

保证所给定的边构成一棵树。

接下来的 mm 行描述各个查询。第 ii 行描述第 ii 个查询,首先是一个整数 kik_i(1≤ki≤n1 \le k_i \le n)—— 表示当前查询中顶点的数量;随后是 kik_i 个整数:vi[1],vi[2],…,vi[ki]v_i[1], v_i[2], \dots, v_i[k_i](1≤vi[j]≤n1 \le v_i[j] \le n),其中 vi[j]v_i[j] 表示第 ii 个查询中的第 jj 个顶点。

保证单个查询中所有顶点互不相同。

保证所有 kik_i 的总和不超过 2⋅1052 \cdot 10^5(即 ∑i=1mki≤2⋅105\sum\limits_{i=1}^{m} k_i \le 2 \cdot 10^5)。

输出格式

For each query, print the answer — "YES", if there is a path from the root to some vertex uu such that each of the given kk vertices is either belongs to this path or has the distance 11 to some vertex of this path and "NO" otherwise.

对于每个查询,请输出答案——如果存在一条从根节点到某个顶点 uu 的路径,使得给定的 kk 个顶点中的每一个要么属于该路径,要么与该路径上的某个顶点的距离为 11,则输出 "YES";否则输出 "NO"。

输入输出样例

  • 输入#1

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

    输出#1

    YES
    YES
    YES
    YES
    NO
    NO

说明/提示

The picture corresponding to the example:

Consider the queries.

The first query is [3,8,9,10][3, 8, 9, 10]. The answer is "YES" as you can choose the path from the root 11 to the vertex u=10u=10. Then vertices [3,9,10][3, 9, 10] belong to the path from 11 to 1010 and the vertex 88 has distance 11 to the vertex 77 which also belongs to this path.

The second query is [2,4,6][2, 4, 6]. The answer is "YES" as you can choose the path to the vertex u=2u=2. Then the vertex 44 has distance 11 to the vertex 11 which belongs to this path and the vertex 66 has distance 11 to the vertex 22 which belongs to this path.

The third query is [2,1,5][2, 1, 5]. The answer is "YES" as you can choose the path to the vertex u=5u=5 and all vertices of the query belong to this path.

The fourth query is [4,8,2][4, 8, 2]. The answer is "YES" as you can choose the path to the vertex u=9u=9 so vertices 22 and 44 both have distance 11 to the vertex 11 which belongs to this path and the vertex 88 has distance 11 to the vertex 77 which belongs to this path.

The fifth and the sixth queries both have answer "NO" because you cannot choose suitable vertex uu.

对应示例的图片:

考虑如下查询。

第一个查询为 [3,8,9,10][3, 8, 9, 10]。答案为“YES”,因为你可以选择从根节点 11 到顶点 u=10u=10 的路径。此时,顶点 [3,9,10][3, 9, 10] 均属于从 11 到 1010 的路径,而顶点 88 到该路径上的顶点 77 的距离为 11。

第二个查询为 [2,4,6][2, 4, 6]。答案为“YES”,因为你可以选择到顶点 u=2u=2 的路径。此时,顶点 44 到该路径上的顶点 11 的距离为 11,而顶点 66 到该路径上的顶点 22 的距离也为 11。

第三个查询为 [2,1,5][2, 1, 5]。答案为“YES”,因为你可以选择到顶点 u=5u=5 的路径,且查询中的所有顶点均属于该路径。

第四个查询为 [4,8,2][4, 8, 2]。答案为“YES”,因为你可以选择到顶点 u=9u=9 的路径,此时顶点 22 和 44 到该路径上的顶点 11 的距离均为 11,而顶点 88 到该路径上的顶点 77 的距离也为 11。

第五个和第六个查询的答案均为“NO”,因为你无法选出满足条件的顶点 uu。

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

首页