办校内周赛有人不会并查集,用很多for循环实现并查集部分功能,居然能ac这道题!!
增加hack数据
输入:
1000000
2 3 4 5 6 ...... 1000000 1
输出:
1
下面这段代码输出为0答案错误。
#include<bits/stdc++.h>
using namespace std;
//#define int long long
int a[1000005];
signed main()
{
int n;
cin>>n;
int sum=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
a[i]=a[a[i]];
for(int i=1;i<=n;i++)
a[i]=a[a[i]];
for(int i=1;i<=n;i++)
a[i]=a[a[i]];
for(int i=1;i<=n;i++)
a[i]=a[a[i]];
for(int i=1;i<=n;i++)
a[i]=a[a[i]];
for(int i=1;i<=n;i++)
a[i]=a[a[i]];
for(int i=1;i<=n;i++)
a[i]=a[a[i]];
for(int i=1;i<=n;i++)
a[i]=a[a[i]];
for(int i=1;i<=n;i++)
a[i]=a[a[i]];
for(int i=1;i<=n;i++)
a[i]=a[a[i]];
for(int i=1;i<=n;i++)
a[i]=a[a[i]];
for(int i=1;i<=n;i++)
a[i]=a[a[i]];
for(int i=1;i<=n;i++)
if(a[i]==i)
sum++;
cout<<sum;
}