比赛 |
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;
}