Особый граф
Дан ориентированный граф состоящий из n вершин. Особенность графа заключается в том, что из каждой вершины исходит максимум одно ребро. Ваша задача заключается в том чтобы уметь выполнять два вида запросов:
1 a - удалить ребро иcходящее из вершины a. Гарантируется что несуществующее ребро не удаляется (1 ≤ a ≤ n)
2 a b - вывести кратчайшее расстояние из вершины a в вершину b, если таковое существует, иначе вывести -1 без кавычек (1 ≤ a, b ≤ n).
Входные данные
В первой строке задано натуральное число n (n ≤ 10^5
) - число вершин графа. В следующей строке задано n целых чисел, i-ое число next[i]
(0 ≤ next[i]
≤ n) вершина, в которую ведет ребро из вершины i. Если next[i]
= 0, считайте, что из вершины i нет ребра. В третьей строке задано число m (m ≤ 10^5
) - количество запросов. В последующих m строках заданы запросы, соответствующие описанию из условия.
Выходные данные
Для каждого запроса вида 2 a b выведите ответ на одной строке, в том порядке, в котором заданы запросы.