Special graph
Special graph
You are given a directed graph with n vertices. The special thing about the graph is that each vertex has at most one outgoing edge. Your task is to answer the following two types of queries:
1 a - delete the only edge outgoing from vertex a. It is guaranteed that the edge exists (1 ≤ a ≤ n),
2 a b - output the length of the shortest path from vertex a to vertex b, if the path exists. Otherwise output **-1** without quotes (1 ≤ a, b ≤ n).
Input data
First line contains a natural number n (n ≤ 10^5
) - the number of vertices in the graph. The following line contains n integer numbers, i-th number is next[i]
(0 ≤ next[i]
≤ n), meaning that there is an edge from vertex i to vertex next[i]
. If next[i]
= 0, assume that there is no outgoing edge from vertex i. Third line contains a natural number m (m ≤ 10^5
) - the number of queries. The following m contain a query each. Queries are given in the manner described above.
Output data
On the i-th line output the answer for the i-th query of type 2 a b.
Examples
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
4 2 -1 -1 -1
4 4 4 1 3 5 2 2 4 2 2 1 1 4 1 2 2 3 1
1 3 1