Submission #92880

#TimeUsernameProblemLanguageResultExecution timeMemory
92880emil_physmathSpecial graph (IZhO13_specialg)C++17
0 / 100
1079 ms3356 KiB
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;

int nei[100005];
bool used[100005];

int DFS(int u, int v, int curAns=0);
int main()
{
	int n, q;
	cin>>n;
	for (int u=1; u<=n; u++)
		cin>>nei[u];
	cin>>q;
	while (q--)
	{
		int type, u, v;
		cin>>type;
		if (type==1)
		{
			cin>>u;
			nei[u]=0;
		}
		else
		{
			cin>>u>>v;
			memset(used+1, 0, n);
			cout<<DFS(u, v)<<'\n';
		}
	}

	char I;
	cin >> I;
	return 0;
}

int DFS(int u, int v, int curAns)
{
	used[u]=true;
	if (u==v) return curAns;
	if (!nei[u] || used[nei[u]])
		return -1;
	int temp=DFS(nei[u], v);
	return temp==-1?-1:temp+1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...