0分,帮帮我
查看原帖
0分,帮帮我
89343
Forgotten_0114507666楼主2020/8/6 08:08
#include<cstdio>
using namespace std;
int father[1001];
int pc=0;
int find(int a)
{
   if(father[a]!=a) father[a]=find(father[a]);
   return father[a];
}
int main()
{
	char ch;
	int n,m;
   begin:;
	scanf("%d%d",&n,&m);
   if(n==0)return 0;
   for(int i=1;i<=n;i++)
	{
	    father[i]=i;
	}
   for(int i=0,a,b,fa,fb;i<m;i++)
	{
	    scanf("%d%d",&a,&b);
	    fa=find(a);  
	    fb=find(b);
	    if (fa!=fb) father[fa]=fb;
	}
   for(int i=1;i<=n;i++)
	{
		if(father[i]==i) pc++;
	}
	if(m==0)printf("%d\n",n-1);
	else if(pc<=1)printf("%d\n",0);
   else printf("%d\n",pc-1);
   goto begin;
}
2020/8/6 08:08
加载中...