比赛 |
20120907 |
评测结果 |
AAAATTTTTT |
题目名称 |
玻璃球游戏 |
最终得分 |
40 |
用户昵称 |
王者自由 |
运行时间 |
6.021 s |
代码语言 |
C++ |
内存使用 |
1.44 MiB |
提交时间 |
2012-09-07 16:40:25 |
显示代码纯文本
#include <cstdio>
const int N = 300000 + 10;
int n, q, x, y;
int b[N];
int DFS(int s) {
bool v[N] = {0};
//fprintf(stderr, "\n");
for(int i=s; b[i]!=s; i=b[i]) {
//fprintf(stderr, "%d ", i);
if(v[i]) return 0;
v[i] = 1;
if(!b[i]) return i;
} return 0;
}
int main() {
freopen("marbles.in", "r", stdin);
freopen("marbles.out", "w", stdout);
scanf("%d", &n);
for(int i=1; i<=n; i++)
scanf("%d", b+i);
scanf("%d", &q);
while(q--) {
scanf("%d %d", &x, &y);
if(x == 1) {
if(x = DFS(y))
printf("%d\n", x);
else printf("CIKLUS\n");
} else b[y] = 0;
}
return 0;
}