比赛 20120907 评测结果 AAAATTTTTT
题目名称 玻璃球游戏 最终得分 40
用户昵称 Makazeu 运行时间 6.002 s
代码语言 C++ 内存使用 2.58 MiB
提交时间 2012-09-07 21:56:03
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int MAXN=300100;
int Edge[MAXN],N,Q,flag[MAXN];

inline void Clear() {for(int i=1;i<=N;i++) flag[i]=0;}

inline void init()
{
	scanf("%d\n",&N);
	for(int i=1;i<=N;i++) scanf("%d",&Edge[i]);
	scanf("%d",&Q);
}

int dfs(int k)
{
	if(flag[k]) return 0;
	if(Edge[k]==0) return k;
	flag[k]=1; return dfs(Edge[k]);
}

int main()
{
	freopen("marbles.in","r",stdin);
	freopen("marbles.out","w",stdout);
	init(); int x,y,z;
	for(int i=1;i<=Q;i++)
	{
		scanf("%d %d\n",&x,&y);
		if(x==1) 
		{
			z=dfs(y);
			if(z==0) printf("CIKLUS\n");
			else printf("%d\n",z);
			Clear();
		}
		if(x==2) Edge[y]=0;
	}
	return 0;
}