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/