#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 畅通工程 并查集模版
最新推荐文章于 2021-05-15 15:51:54 发布
本文深入探讨了并查集算法的实现原理与应用,通过具体的代码示例展示了如何使用并查集来解决图论中连通分量的问题。并查集是一种数据结构,常用于处理一些不交集的合并及查询问题,它可以通过高效的路径压缩和按秩合并来减少查找的时间复杂度。
11万+

被折叠的 条评论
为什么被折叠?



