Решение задачи Бейджик с Codeforces

Без пояснения   Просмотров: 87


Как вы, возможно, знаете в ЛКШ за плохое поведение ставят дырки в бейджик. Вот и сегодня один из суровых преподавателей поймал группу из n школьников за очередной проделкой. Пронумеруем для удобства школьников в этой группе от 1 до n.

Преподаватель подошёл к школьнику a и поставил ему дырку в бейджик. Тот, правда, попытался оправдаться, что зачинщиком бы некоторый другой школьник pa.

После этого преподаватель подошёл к школьнику pa и поставил дырку в бейджик и ему. Тот в ответ послал его к школьнику ppa.

Так продолжалось некоторое время, но, так как количество школьников было конечно, то через некоторое время преподаватель пришёл к школьнику, которому он уже поставил дырку.

После этого он поставил в бейдж этого школьника вторую дырку и счёл на этом свой долг выполненным.

Вы не знаете с какого школьника a начал преподаватель. Но вы знаете все числа pi. Выясните для каждого возможного школьника a того школьника, которому была поставлена вторая дырка.


Код

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int p[n];
	for(int i=0;i<n;i++)
	{
		cin>>p[i];
	}
	for(int i=0;i<n;i++)
	{
		int a[n]={};
		int j=i;
		while(!a[j])
		{
			a[j]=1;
			j=p[j]-1;
		}
		cout<<j+1<<" ";
	}
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться