蒟蒻只会并查集,求助这个算法有没有正确性(或者应该注意什么细节)
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<queue>
#include<cstring>
# define M 205
using namespace std;
int n,fa[M],ans=0;
bool f[M];
int find(int x)
{
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) fa[i]=i;
int u;
for(int i=1;i<=n;i++)
while(scanf("%d",&u))
{
if(u==0) break;
int Fa=find(i);
fa[u]=Fa;
}
for(int i=1;i<=n;i++)
if(f[find(i)]==0)
{ans++;f[find(i)]=1;}
printf("%d",ans);
return 0;
}