B. Badge

本文针对 CodeForces 平台上的题目 B.Badge 提供了解题思路及代码实现。该题要求确定在特定学生被老师发现作弊的情况下,哪位学生会被打上第二个标记。文章详细介绍了输入输出格式,并提供了完整的 C++ 解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:http://codeforces.com/problemset/problem/1020/B 

B. Badge

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

In Summer Informatics School, if a student doesn't behave well, teachers make a hole in his badge. And today one of the teachers caught a group of nn students doing yet another trick.

Let's assume that all these students are numbered from 11 to nn. The teacher came to student aa and put a hole in his badge. The student, however, claimed that the main culprit is some other student papa.

After that, the teacher came to student papa and made a hole in his badge as well. The student in reply said that the main culprit was student ppappa.

This process went on for a while, but, since the number of students was finite, eventually the teacher came to the student, who already had a hole in his badge.

After that, the teacher put a second hole in the student's badge and decided that he is done with this process, and went to the sauna.

You don't know the first student who was caught by the teacher. However, you know all the numbers pipi. Your task is to find out for every student aa, who would be the student with two holes in the badge if the first caught student was aa.

Input

The first line of the input contains the only integer nn (1≤n≤10001≤n≤1000) — the number of the naughty students.

The second line contains nn integers p1p1, ..., pnpn (1≤pi≤n1≤pi≤n), where pipi indicates the student who was reported to the teacher by student ii.

Output

For every student aa from 11 to nn print which student would receive two holes in the badge, if aa was the first student caught by the teacher.

Examples

input

Copy

3
2 3 2

output

Copy

2 2 3 

input

Copy

3
1 2 3

output

Copy

1 2 3 

Note

The picture corresponds to the first example test case.

When a=1a=1, the teacher comes to students 11, 22, 33, 22, in this order, and the student 22 is the one who receives a second hole in his badge.

When a=2a=2, the teacher comes to students 22, 33, 22, and the student 22 gets a second hole in his badge. When a=3a=3, the teacher will visit students 33, 22, 33 with student 33 getting a second hole in his badge.

For the second example test case it's clear that no matter with whom the teacher starts, that student would be the one who gets the second hole in his badge.

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=1010;
int a[N],b[N],c[N];
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {int k=0;
        for(int i=1; i<=n; i++)
            scanf("%d",&a[i]);

        for(int i=1; i<=n; i++)
        {
            memset(b,0,sizeof(b));
            int x=i;
            while(1)
            {
                b[x]++;
                if(b[x]==2)
                {
                    k++;
                    c[k]=x;
                    break;
                }
                x=a[x];
            }
        }
        for(int i=1; i<=k; i++)
        {
            if(i!=k)
                printf("%d ",c[i]);
            else printf("%d\n",c[i]);

        }
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值