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