Олимпиадный тренинг

Задача . E. Запросы на дереве


Кто не работает, тот не ест. Получи то, что ты хочешь своими силами. Поверь, искренние и серьёзные люди всегда смеются последними. Но я всё равно не дам тебе подарка.
—Санта, Hayate no Gotoku!

Поскольку Хаяте не получил никаких рождественских подарков от Санты, его вместо этого ожидает решение задачи на запросы на дереве.

У Хаяте есть дерево с \(n\) вершинами.

Теперь Хаяте хочет, чтобы вы ответили на \(q\) запросов. Каждый запрос состоит из вершины \(x\) и \(k\) других дополнительных вершин \(a_1,a_2,\ldots,a_k\). Эти \(k+1\) вершина гарантированно различны.

Для каждого запроса необходимо найти длину самого длинного простого пути, начинающегося в вершине \(x^\dagger\) после удаления вершин \(a_1,a_2,\ldots,a_k\) вместе со всеми ребрами, соединенными хотя бы с одной из вершин \(a_1,a_2,\ldots,a_k\).

\(^\dagger\) Простой путь длины \(k\), начинающийся в вершине \(x\) — это последовательность различных вершин \(x=u_0,u_1,\ldots,u_k\) таких, что существует ребро между вершинами \(u_{i-1}\) и \(u_i\) для всех \(1 \leq i \leq k\).

Входные данные

Первая строка содержит два целых числа \(n\) и \(q\) (\(1 \le n, q \le 2 \cdot 10^5\)) — количество вершин дерева и количество запросов.

Следующие \(n - 1\) строк содержат по два целых числа \(u\) и \(v\) (\(1 \le u, v \le n\), \(u \ne v\)) — в дереве есть ребро между вершинами \(u\) и \(v\). Гарантируется, что заданные ребра образуют дерево.

Следующие \(q\) строк описывают запросы. Каждая строка содержит целые числа \(x\), \(k\) и \(a_1,a_2,\ldots,a_k\) (\(1 \leq x \leq n\), \(0 \leq k < n\), \(1 \leq a_i \leq n\)) — начальная вершина, количество удаленных вершин и удаленные вершины.

Гарантируется, что в запросе все вершины \(x,a_1,a_2,\ldots,a_k\) различны.

Гарантируется, что сумма \(k\) по всем запросам не превосходит \(2 \cdot 10^5\).

Выходные данные

Для каждого запроса выведите одно целое число, являющееся ответом на этот запрос.

Примечание

В первом примере дерево выглядит следующим образом:

В первом запросе ни одна вершина не пропущена. Самый длинный простой путь, начинающийся в вершине \(2\), это \(2 \to 1 \to 3 \to 4\). Таким образом, ответ — \(3\).

Во третьем запросе отсутствуют вершины \(1\) и \(6\), и дерево показано ниже. Самый длинный простой путь из вершины \(2\) — это \(2 \to 5\). Таким образом, ответ — \(1\).


Примеры
Входные данныеВыходные данные
1 7 7
1 2
1 3
3 4
2 5
2 6
6 7
2 0
2 1 1
2 2 1 6
3 1 4
3 1 1
5 0
5 2 1 6
3
2
1
4
1
4
1
2 4 4
1 2
1 3
2 4
2 1 3
3 1 4
2 1 4
2 3 1 3 4
1
2
2
0

time 4000 ms
memory 512 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя