Максим та похід за грошима
Limits: 2 sec., 256 MiB
«Гроші, що ж може бути важливіше», — подумав Максим і пішов по зарплату.
Місто, де він проживає, має доволі цікаву структуру — це набір \(n\) точок, пронумерованих від 1 до \(n\), і між певними точками є дорога. Люди, що будували місто були розумними, тому від центральної точки з номером 1 можна добратися до кожної іншої точки (можливо, через якісь інші), так ще й тільки єдиним шляхом.
Він уже привик, що кожного місяця йому, щоб отримати гроші, потрібно робити однакову дію. Йому дають набір \(m\) точок, а він мусить потрапити до кожної з них. Алгоритм обходу потрібних точок у Максима простий.
Спочатку він стоїть у точці з номером 1.
Вибирає якусь потрібну точку та йде туди, і викидає її зі списку.
Повертається назад у точку 1.
Максим ходить рівномірно, тому проходить відстань між двома сусідніми точками за 1 секунду.
Для кожної місяця виведіть час для відвідування всіх точок з набору.
Input
У першому рядку задано два цілих числа \(n\) та \(m\) — кількість точок та кількість запитів відповідно.
У наступних \(n - 1\) рядках задано по два цілих числа — пару номерів сусідніх точок.
У наступних \(m\) рядках задані запити.
Кожен запит починається із цілого числа \(k\) — кількості точок, що потрібно відвідати.
Далі в рядку записані \(k\) цілих чисел \(v_i\) — номери потрібних точок.
Output
В одному рядку виведіть \(m\) чисел \(a_i\) — кількість секунд, що потратить Максим, щоб обійти всі потрібні вершини.
Constraints
\(1 \le n, m \le 10^5\),
\(1 \le v_i \le n\),
сума всіх \(k\) не перевищує \(10^5\).
Samples
| Input (stdin) | Output (stdout) |
|---|---|
| 5 2 1 2 1 3 1 4 1 5 3 2 3 4 4 4 4 4 4 | 6 8 |
Notes
Зауважте, що в одному запиті номери можуть повторюватись і Максим усе одно знову піде у вершину, де він уже був.
| Element Type | Created | Who | Problem | Compiler | Result | Time (sec.) | Memory (MiB) | # | Actions |
|---|