#include<stdio.h>
#include<string.h>
int ft[1001],m;
int find(int x)
{
if(ft[x]==0)
return x;
ft[x]=find(ft[x]);
}
void merge(int a,int b)
{
int fa,fb;
fa=find(a);
fb=find(b);
if(fa==fb)
return;
ft[fa]=fb;
}
int main()
{
int n;
while(~scanf("%d",&m)&&m)
{
scanf("%d",&n);
memset(ft,0,sizeof(ft));
int a,b,i,j;
for(i=0;i<n;i++)
{
scanf("%d%d",&a,&b);
merge(a,b);
}
int num=0;
for(i=1;i<=m;i++)
{
if(!ft[i])
num++;
}
printf("%d\n",num-1);
}
return 0;
}
hdu 1232 畅通工程 并查集模版
最新推荐文章于 2020-03-30 11:28:22 发布