eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Особый граф

Особый граф

Дан ориентированный граф состоящий из n вершин. Особенность графа заключается в том, что из каждой вершины исходит максимум одно ребро. Ваша задача заключается в том чтобы уметь выполнять два вида запросов:

  • 1 a - удалить ребро иcходящее из вершины a. Гарантируется что несуществующее ребро не удаляется (1an)
  • 2 a b - вывести кратчайшее расстояние из вершины a в вершину b, если таковое существует, иначе вывести -1 без кавычек (1a, bn).

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

В первой строке задано натуральное число n (n105) - число вершин графа. В следующей строке задано n целых чисел, i-ое число nexti (0nextin)  вершина, в которую ведет ребро из вершины i. Если nexti = 0, считайте, что из вершины i нет ребра. В третьей строке задано число m (m105) - количество запросов. В последующих m строках заданы запросы, соответствующие описанию из условия.

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

Для каждого запроса вида 2 a b выведите ответ на одной строке, в том порядке, в котором заданы запросы.

Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
6
3 3 4 5 6 4
6
2 1 6
2 1 4
2 1 2
1 3
2 1 6
2 1 4
Выходные данные #1
4
2
-1
-1
-1
Входные данные #2
4
4 4 1 3
5
2 2 4
2 2 1
1 4
1 2
2 3 1
Выходные данные #2
1
3
1
Источник 2013 IX Международная Жаутыковская Олимпиада Алматы, Казахстан, 16 января