---> 2 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: 1 Отображать по:
ограничение по времени на тест
5.0 second;
ограничение по памяти на тест
256 megabytes

Дано дерево из n вершин. У каждой вершины есть цвет. Нужно обработать q запросов ( v i , c i ): найти расстояние от v i до ближайшей к v i вершины цвета c i . Расстоянием между вершинами называется минимальное количество рёбер в пути между ними.

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

На первой строке число n ( 1 ≤ n ≤ 10 5 ), следующая строка содержит числа p 1 , p 2 , ..., p n - 1 . 0 ≤ p i < i . p i – отец вершины i в дереве. Далее строка с числами a 0 , a 1 , ..., a n - 1 . 0 ≤ a i < n . a i – цвет вершины i . Далее строка с числом q ( 1 ≤ q ≤ 10 5 ). Следующие q строк содержат запросы v iq i ( 0 ≤ v i < n , 0 ≤ c i < n ).

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

Для каждого запроса выведите одно число – расстояние до ближайшей вершины нужного цвета, или - 1 , если в дереве нет вершин такого цвета.

Решения, работающие при \(1 \leq n \leq 200\), будут набирать не менее 30 баллов

Примеры
Входные данные
5
0 1 1 3
1 2 3 2 1
9
0 1
0 2
0 3
1 0
2 1
2 2
3 3
3 1
4 2
Выходные данные
0 1 2 -1 2 1 2 1 1 
ограничение по времени на тест
4.0 second;
ограничение по памяти на тест
256 megabytes

Рассмотрим следующую игру об удалении вершин из графа, представляющего лес (то есть объединение нескольких деревьев). Изначально граф состоит из одного дерева из n вершин, а количество очков равно 0 .

Игра задаётся перестановкой вершин и происходит следующим образом:

  1. Если граф опустел, то игра заканчивается.
  2. Иначе выбирается первая ещё не удалённая вершина в перестановке, после чего
  3. Количество очков увеличивается на размер дерева из которого была выбрана вершина, а затем выбранная вершина и все связанные с ней рёбра удаляются, и тот же процесс продолжается на оставшемся графе.

Просуммируем число очков по всем возможным n ! играм. Выведите это число по модулю 10 9 + 7 .

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

В первой строке входного файла дано число N ( 2 ≤ n ≤ 10 5 ) — количество вершин в исходном дереве.

Каждая из последующих N - 1 строк содержит два числа — x i , y i задающих концы соответствующего ребра дерева ( 1 ≤ x i , y i n ).

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

Выведите одно число — суммарное количество очков по модулю 10 9 + 7 .

Система оценки

Тесты к данной задаче состоят из 3 групп:

  1. (20 баллов) n ≤ 10 .
  2. (40 баллов) n ≤ 5000
  3. (40 баллов) n ≤ 10 5

Примеры
Входные данные
2
1 2
Выходные данные
6
Входные данные
3
1 2
2 3
Выходные данные
34

Страница: 1 Отображать по:
Выбрано
:
Отменить
|
Добавить в контест