Максим та похід за грошима
Обмеження: 2 сек., 256 МіБ
«Гроші, що ж може бути важливіше», — подумав Максим і пішов по зарплату.
Місто, де він проживає, має доволі цікаву структуру — це набір n точок, пронумерованих від 1 до n, і між певними точками є дорога. Люди, що будували місто були розумними, тому від центральної точки з номером 1 можна добратися до кожної іншої точки (можливо, через якісь інші), так ще й тільки єдиним шляхом.
Він уже привик, що кожного місяця йому, щоб отримати гроші, потрібно робити однакову дію. Йому дають набір m точок, а він мусить потрапити до кожної з них. Алгоритм обходу потрібних точок у Максима простий.
Спочатку він стоїть у точці з номером 1.
Вибирає якусь потрібну точку та йде туди, і викидає її зі списку.
Повертається назад у точку 1.
Максим ходить рівномірно, тому проходить відстань між двома сусідніми точками за 1 секунду.
Для кожної місяця виведіть час для відвідування всіх точок з набору.
Вхідні дані
У першому рядку задано два цілих числа n та m — кількість точок та кількість запитів відповідно.
У наступних n−1 рядках задано по два цілих числа — пару номерів сусідніх точок.
У наступних m рядках задані запити.
Кожен запит починається із цілого числа k — кількості точок, що потрібно відвідати.
Далі в рядку записані k цілих чисел vi — номери потрібних точок.
Вихідні дані
В одному рядку виведіть m чисел ai — кількість секунд, що потратить Максим, щоб обійти всі потрібні вершини.
Обмеження
1≤n,m≤105,
1≤vi≤n,
сума всіх k не перевищує 105.
Приклади
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
5 2 1 2 1 3 1 4 1 5 3 2 3 4 4 4 4 4 4 | 6 8 |
Примітки
Зауважте, що в одному запиті номери можуть повторюватись і Максим усе одно знову піде у вершину, де він уже був.