Məsələlər
Особый граф
Особый граф
Дан ориентированный граф состоящий из n вершин. Особенность графа заключается в том, что из каждой вершины исходит максимум одно ребро. Ваша задача заключается в том чтобы уметь выполнять два вида запросов:
- 1 a - удалить ребро иcходящее из вершины a. Гарантируется что несуществующее ребро не удаляется (1 ≤ a ≤ n)
- 2 a b - вывести кратчайшее расстояние из вершины a в вершину b, если таковое существует, иначе вывести -1 без кавычек (1 ≤ a, b ≤ n).
Входные данные
В первой строке задано натуральное число n (n ≤ 105
) - число вершин графа. В следующей строке задано n целых чисел, i-ое число nexti
(0 ≤ nexti
≤ n) вершина, в которую ведет ребро из вершины i. Если nexti
= 0, считайте, что из вершины i нет ребра. В третьей строке задано число m (m ≤ 105
) - количество запросов. В последующих m строках заданы запросы, соответствующие описанию из условия.
Выходные данные
Для каждого запроса вида 2 a b выведите ответ на одной строке, в том порядке, в котором заданы запросы.
Giriş verilənləri #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
Çıxış verilənləri #1
4 2 -1 -1 -1
Giriş verilənləri #2
4 4 4 1 3 5 2 2 4 2 2 1 1 4 1 2 2 3 1
Çıxış verilənləri #2
1 3 1