Максим та похід за грошима
Обмеження: 2 сек., 256 МіБ
«Гроші, що ж може бути важливіше», — подумав Максим і пішов по зарплату.
Місто, де він проживає, має доволі цікаву структуру — це набір \(n\) точок, пронумерованих від 1 до \(n\), і між певними точками є дорога. Люди, що будували місто були розумними, тому від центральної точки з номером 1 можна добратися до кожної іншої точки (можливо, через якісь інші), так ще й тільки єдиним шляхом.
Він уже привик, що кожного місяця йому, щоб отримати гроші, потрібно робити однакову дію. Йому дають набір \(m\) точок, а він мусить потрапити до кожної з них. Алгоритм обходу потрібних точок у Максима простий.
Спочатку він стоїть у точці з номером 1.
Вибирає якусь потрібну точку та йде туди, і викидає її зі списку.
Повертається назад у точку 1.
Максим ходить рівномірно, тому проходить відстань між двома сусідніми точками за 1 секунду.
Для кожної місяця виведіть час для відвідування всіх точок з набору.
Вхідні дані
У першому рядку задано два цілих числа \(n\) та \(m\) — кількість точок та кількість запитів відповідно.
У наступних \(n - 1\) рядках задано по два цілих числа — пару номерів сусідніх точок.
У наступних \(m\) рядках задані запити.
Кожен запит починається із цілого числа \(k\) — кількості точок, що потрібно відвідати.
Далі в рядку записані \(k\) цілих чисел \(v_i\) — номери потрібних точок.
Вихідні дані
В одному рядку виведіть \(m\) чисел \(a_i\) — кількість секунд, що потратить Максим, щоб обійти всі потрібні вершини.
Обмеження
\(1 \le n, m \le 10^5\),
\(1 \le v_i \le n\),
сума всіх \(k\) не перевищує \(10^5\).
Приклади
| Вхідні дані (stdin) | Вихідні дані (stdout) |
|---|---|
| 5 2 1 2 1 3 1 4 1 5 3 2 3 4 4 4 4 4 4 | 6 8 |
Примітки
Зауважте, що в одному запиті номери можуть повторюватись і Максим усе одно знову піде у вершину, де він уже був.
| Element Type | Створено | Хто | Задача | Компілятор | Результат | Час (сек.) | Пам'ять (МіБ) | № | Дії |
|---|