AT_tenka1_2015_final_f 根付き木のみさわさん

题目描述

高桥君家的院子里,长着一棵以顶点 $1$ 为根的有根树,这棵树被称为“みさわさん”。 在第 $i$ 天早晨,“みさわさん”会在 $M_i$ 个顶点 $v_{i,1},\ldots,v_{i,M_i}$ 上结出果实。 然而,在同一天的晚上,会有鸟飞来,把剩下的所有果实都吃掉。 高桥君每天可以选择“みさわさん”的一个顶点进行摇晃。 如果摇晃顶点 $w$,那么他可以获得 $w$ 的所有子孙(包括 $w$ 本身)上结的所有果实。 高桥君希望在第 $i$ 天能从“みさわさん”上获得至少 $K_i$ 个果实。 请你帮高桥君找出,通过摇晃可以获得至少 $K_i$ 个果实的顶点中,距离根最远的那个顶点,并输出该顶点到根的距离。 这里,任一顶点到根的距离,指的是从根到该顶点的唯一简单路径上包含的边的数量。

输入格式

输入按以下格式从标准输入读入。 > $N$ $a_1$ $b_1$ $a_2$ $b_2$ : $a_{N-1}$ $b_{N-1}$ $Q$ $M_1$ $K_1$ $v_{1,1}$ $v_{1,2}$ ... $v_{1,M_1}$ : $M_Q$ $K_Q$ $v_{Q,1}$ $v_{Q,2}$ ... $v_{Q,M_Q}$ - 第 $1$ 行,给出“みさわさん”的顶点数 $N$,$3 \leq N \leq 10^5$。 - 接下来的 $N-1$ 行,第 $i$ 行给出一条边连接的两个顶点 $a_i, b_i$,$1 \leq a_i < b_i \leq N$,用空格分隔。 - 保证“みさわさん”是一棵树。 - 第 $N+1$ 行,给出高桥君采摘果实的天数 $Q$,$1 \leq Q \leq 10^5$。 - 接下来的 $2Q$ 行中, - 第 $2i-1$ 行给出第 $i$ 天“みさわさん”结的果实数 $M_i$ 和高桥君希望采摘的果实数 $K_i$,$1 \leq K_i \leq M_i \leq N$。 - 第 $2i$ 行给出第 $i$ 天“みさわさん”结有果实的 $M_i$ 个顶点编号。 - 输入保证 $\sum M_i \leq 10^5$。

输出格式

对于每一天的输入,输出满足条件的顶点中,距离根最远的顶点到根的距离,每行输出一个答案。输出末尾需换行。

说明/提示

## 部分分 本题设有部分分。 - 对于 $1 \leq N \leq 100$ 的数据集,答对可得 $20$ 分。 - 对于所有数据集全部答对可再得 $110$ 分,总分为 $130$ 分。 ## 样例解释 1 - 第 $1$ 个查询,“みさわさん”在顶点 $4,5$ 上结了 $2$ 个果实。在能获得 $2$ 个果实的顶点中,距离根最远的是顶点 $3$,其到根的距离为 $2$。 - 第 $2$ 个查询,“みさわさん”在顶点 $1$ 上结了 $1$ 个果实。在能获得 $1$ 个果实的顶点中,距离根最远的是顶点 $1$,其到根的距离为 $0$。 - 第 $3$ 个查询,“みさわさん”在顶点 $2,1$ 上结了 $2$ 个果实。在能获得 $1$ 个果实的顶点中,距离根最远的是顶点 $2$,其到根的距离为 $1$。 由 ChatGPT 4.1 翻译