Submission #1009220

#TimeUsernameProblemLanguageResultExecution timeMemory
1009220bornagSpecial graph (IZhO13_specialg)C++14
0 / 100
1022 ms856 KiB
#include <bits/stdc++.h>
using namespace std;

const int maxn = 1e5;

int n, m;
int graph[maxn];
int dis[maxn];
bool vis[maxn];

int dfs(int nd, int e, int d){
	vis[nd] = true;
	if(nd == e) return d;
	
	if(graph[nd] == -1) return -1;
	if(!vis[graph[nd]]) return dfs(graph[nd], e, d+1);
	else return -1;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cin >> n;
	
	for(int i = 0; i < n; i++){
		cin >> graph[i]; graph[i]--;
	}
	
	cin >> m;
	
	while(m--){
		int typ; cin >> typ;
		
		if(typ == 1){
			int x; cin >> x;
			graph[x-1] = -1;
		} else {
			int a, b; cin >> a >> b;
			
			if(graph[a-1] == -1) {
				cout << -1 << '\n';
				continue;
			}
			
			for(int i = 0; i < n; i++)
				vis[i] = false;
			cout << dfs(a-1, b-1, 0) << '\n';
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...