为了提高集训队同学的学习效率,赵老师决定将所有队员组成三人小组,以组为单位进行训练。但是如何分组,让赵老师头疼。最后决定让每个队员自己选择一名想要组队的队友。于是,小龙选择了小慜,小慜选择了小泰,小泰选择了小龙,这样选择后就构成三角关系,他们可以直接组成三人小组。现在你需要判断在所有队员进行选择后能不能直接构成三角关系,组成三人小组。
输入格式:
输入有两行,第一行是一个正整数n(n≤5000),表示总人数。第二行有N个整数x1,x2,⋯,xn,其中xi表示第i个人想要与xi组队。
输出格式:
如果能够组队,则输出“YES”,否则输出“NO”。
输入样例:
在这里给出一组输入。例如:
5
2 4 5 1 3
输出样例:
在这里给出相应的输出。例如:
YES
#include<bits/stdc++.h>
using namespace std;
const int N=5e3+5;
int a[N]={0};
int main()
{
int n,Flag=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
if(a[a[a[i]]]==i) Flag=1;
}
puts(Flag? "YES":"NO");
return 0;
}