hdu1232最水并查集模版题
求集合的个数
#include <cstdlib>
#include <iostream>
#include<stdio.h>
using namespace std;
const int MAXN=1003;
int p[MAXN];
int find(int i)
{
if(p[i]!=i)
{
return p[i]=find(p[i]);
}else
{
return i;
}
}
void connect(int a,int b)
{
int f1=find(a);
int f2=find(b);
if(f1>f2)
{
p[f1]=f2;
}else if(f1<f2)
{
p[f2]=f1;
}
}
int main(int argc, char *argv[])
{
int n,m;
while((cin>>n)&&(n!=0)&&(cin>>m))
{
int i=0;
int sum=0;
for(i=1;i<=n;i++)
{
p[i]=i;
}
for(i=0;i<=m-1;i++)
{
int a,b;
scanf("%d%d",&a,&b);
connect(a,b);
}
for(i=n;i>=1;i--)
{
if(find(i)==i)
{
sum++;
}
}
cout<<sum-1<<endl;
}
//system("PAUSE");
return EXIT_SUCCESS;
}
本博客(http://www.cnblogs.com/cj695/)未标明转载的内容均为本站原创,非商业用途转载时请署名(77695)并注明来源(http://www.cnblogs.com/cj695/)。商业用途请联系作者(77695) QQ:646710030。作者(77695)保留本博客所有内容的一切权利。
独立博客:http://nfeng.cc/
独立博客:http://nfeng.cc/

浙公网安备 33010602011771号