CF1328E.Tree Queries
普及+/提高
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given a rooted tree consisting of n vertices numbered from 1 to n. The root of the tree is a vertex number 1.
A tree is a connected undirected graph with n−1 edges.
You are given m queries. The i-th query consists of the set of ki distinct vertices vi[1],vi[2],…,vi[ki]. Your task is to say if there is a path from the root to some vertex u such that each of the given k vertices is either belongs to this path or has the distance 1 to some vertex of this path.
你将得到一棵包含 n 个顶点(编号从 1 到 n)的有根树,树的根节点为顶点 1。
树是一种具有 n−1 条边的连通无向图。
你将收到 m 个查询。第 i 个查询包含一个由 ki 个互不相同的顶点 vi[1],vi[2],…,vi[ki] 组成的集合。你的任务是判断:是否存在一条从根节点到某个顶点 u 的路径,使得给定的 ki 个顶点中的每一个,要么位于该路径上,要么与该路径上的某个顶点的距离恰好为 1。
输入格式
The first line of the input contains two integers n and m (2≤n≤2⋅105, 1≤m≤2⋅105) — the number of vertices in the tree and the number of queries.
Each of the next n−1 lines describes an edge of the tree. Edge i is denoted by two integers ui and vi, the labels of vertices it connects (1≤ui,vi≤n,ui=vi).
It is guaranteed that the given edges form a tree.
The next m lines describe queries. The i-th line describes the i-th query and starts with the integer ki (1≤ki≤n) — the number of vertices in the current query. Then ki integers follow: vi[1],vi[2],…,vi[ki] (1≤vi[j]≤n), where vi[j] is the j-th vertex of the i-th query.
It is guaranteed that all vertices in a single query are distinct.
It is guaranteed that the sum of ki does not exceed 2⋅105 (i=1∑mki≤2⋅105).
输入的第一行包含两个整数 n 和 m(2≤n≤2⋅105,1≤m≤2⋅105)—— 分别表示树中顶点的数量和查询的数量。
接下来的 n−1 行每行描述树中的一条边。第 i 条边由两个整数 ui 和 vi 表示,即该边所连接的两个顶点的编号(1≤ui,vi≤n,且 ui=vi)。
保证所给定的边构成一棵树。
接下来的 m 行描述各个查询。第 i 行描述第 i 个查询,首先是一个整数 ki(1≤ki≤n)—— 表示当前查询中顶点的数量;随后是 ki 个整数:vi[1],vi[2],…,vi[ki](1≤vi[j]≤n),其中 vi[j] 表示第 i 个查询中的第 j 个顶点。
保证单个查询中所有顶点互不相同。
保证所有 ki 的总和不超过 2⋅105(即 i=1∑mki≤2⋅105)。
输出格式
For each query, print the answer — "YES", if there is a path from the root to some vertex u such that each of the given k vertices is either belongs to this path or has the distance 1 to some vertex of this path and "NO" otherwise.
对于每个查询,请输出答案——如果存在一条从根节点到某个顶点 u 的路径,使得给定的 k 个顶点中的每一个要么属于该路径,要么与该路径上的某个顶点的距离为 1,则输出 "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]. The answer is "YES" as you can choose the path from the root 1 to the vertex u=10. Then vertices [3,9,10] belong to the path from 1 to 10 and the vertex 8 has distance 1 to the vertex 7 which also belongs to this path.
The second query is [2,4,6]. The answer is "YES" as you can choose the path to the vertex u=2. Then the vertex 4 has distance 1 to the vertex 1 which belongs to this path and the vertex 6 has distance 1 to the vertex 2 which belongs to this path.
The third query is [2,1,5]. The answer is "YES" as you can choose the path to the vertex u=5 and all vertices of the query belong to this path.
The fourth query is [4,8,2]. The answer is "YES" as you can choose the path to the vertex u=9 so vertices 2 and 4 both have distance 1 to the vertex 1 which belongs to this path and the vertex 8 has distance 1 to the vertex 7 which belongs to this path.
The fifth and the sixth queries both have answer "NO" because you cannot choose suitable vertex u.
对应示例的图片:

考虑如下查询。
第一个查询为 [3,8,9,10]。答案为“YES”,因为你可以选择从根节点 1 到顶点 u=10 的路径。此时,顶点 [3,9,10] 均属于从 1 到 10 的路径,而顶点 8 到该路径上的顶点 7 的距离为 1。
第二个查询为 [2,4,6]。答案为“YES”,因为你可以选择到顶点 u=2 的路径。此时,顶点 4 到该路径上的顶点 1 的距离为 1,而顶点 6 到该路径上的顶点 2 的距离也为 1。
第三个查询为 [2,1,5]。答案为“YES”,因为你可以选择到顶点 u=5 的路径,且查询中的所有顶点均属于该路径。
第四个查询为 [4,8,2]。答案为“YES”,因为你可以选择到顶点 u=9 的路径,此时顶点 2 和 4 到该路径上的顶点 1 的距离均为 1,而顶点 8 到该路径上的顶点 7 的距离也为 1。
第五个和第六个查询的答案均为“NO”,因为你无法选出满足条件的顶点 u。
输入解题思路,AI测评打分。不知道怎么写?