#P1187. 询问

询问

题目描述

给定一棵 nn 个点的树,定义 f(S,x)f(S, x) 为 SS 中的点与 xx 的距离的最大值。形式化地,f(S,x)=max⁡s∈Sdist⁡(x,s)f(S, x) = \max_{s \in S} \operatorname{dist}(x, s),其中 dist⁡(x,y)\operatorname{dist}(x, y) 定义为 x,yx,y 之间的唯一的简单路径上的边数。

你需要回答 qq 次查询,每次查询给定一个点集 SS,你需要回答 min⁡1≤i≤nf(S,i)\min_{1 \le i \le n} f(S, i)。换言之,你需要选择一个点 ii,使得 SS 中的点与 ii 的距离的最大值最小,且你只需要输出这个最小值。

输入格式

第一行一个正整数 TT,代表数据组数。接下来 TT 组数据,每组数据的格式如下:

  • 第一行两个正整数 n,qn,q,代表树的点数和查询组数;
  • 接下来 n−1n-1 行,第 ii 行两个整数 xi,yix_i,y_i,代表树中有一条 xi,yix_i,y_i 之间的边;
  • 接下来 qq 组查询,每组查询占两行。每组查询的格式如下:
    • 第一行一个整数 ∣S∣|S|,代表查询的点集 SS 的大小;
    • 接下来一行 ∣S∣|S| 个整数,代表点集 SS。

输出格式

对于每组数据,输出 qq 行,每行一个整数,代表该组查询的答案。

1
7 2
1 2
1 3
2 4
2 5
2 6
3 7
1
4
4
4 5 6 7
0
2

数据范围

  • 对于 30%30\% 的数据,1≤T≤2001 \le T \le 200,1≤n,q≤2001 \le n,q \le 200;
  • 对于另外 30%30\% 的数据,∣S∣≤10|S| \le 10;
  • 对于 100%100\% 的数据:
    • 1≤T≤1051 \le T \le 10^5;
    • 1≤n,q≤2⋅1051 \le n,q \le 2 \cdot 10^5,1≤∑n,∑q≤2⋅1051 \le \sum n, \sum q \le 2 \cdot 10^5;
    • 1≤∣S∣≤n1 \le |S| \le n,1≤∑∣S∣≤2⋅1051 \le \sum |S| \le 2 \cdot 10^5,保证输入的 SS 中的元素互不相同;
    • 1≤xi,yi≤n1 \le x_i, y_i \le n,保证输入的图是一棵树。