Codeforces Round #503 (by SIS, Div. 2) B. Badge(思维)


题目链接:http://codeforces.com/contest/1020/problem/B
题意是有n个学生干了一些不可描述的事情,然后老师要去抓人,当抓到一个学生的时候这个学生就标记1,然后这个学生会说是另一个学生让他干的,然后老师就会去找另一个学生,直到老师找下一个学生的时候,该学生已经被标记过了为止,输出这个学生的编号。从1开始找,然后输出被重复找到的学生编号,然后从2开始找......直到n。
算是思维题吧,就是模拟老师找人这个过程好了,因为现在比赛还没结束...我也只是pp,不知道能不能ac...(因为看到C题的过题人数很少,又扫了一眼题,发现是不会做的题,所以就直接来写博客了...
【Codeforces Round #503 (by SIS, Div. 2) B. Badge(思维)】AC代码:

#include #include #include #include using namespace std; int n; int pre[1005]; int main() { cin>>n; int flag = 0; for(int i=1; i<=n; i++){ scanf("%d",&pre[i]); } for(int i=1; i<=n; i++){ map ma; int x = i; while(1){ ma[x]++; if(ma[x] == 2){ printf("%d ",x); break; } x = pre[x]; } } return 0; }

    推荐阅读