제출 #1009241

#제출 시각아이디문제언어결과실행 시간메모리
1009241bornagSpecial graph (IZhO13_specialg)C++14
0 / 100
1078 ms1220 KiB
#include <iostream>
using namespace std;
 
const int maxn = 1e5;
 
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
 
int vis[maxn];
 
int n, m;
int graph[maxn];
int dis[maxn];
 
int dfs(int nd, int e, int d, int indx){
	vis[nd] = indx;
	if(nd == e) return d;
	
	if(graph[nd] == -1) return -1;
	if(vis[graph[nd]] != indx) return dfs(graph[nd], e, d+1, indx);
	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;
			}
			
			cout << dfs(a-1, b-1, 0, m) << '\n';
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...