求助
查看原帖
求助
525272
XUAN—楼主2021/9/9 12:00

蒟蒻只会并查集,求助这个算法有没有正确性(或者应该注意什么细节)

82分Code

#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;
}


2021/9/9 12:00
加载中...