hdu1213依旧并查集。求集合的个数
#include<iostream> #include<set> using namespace std; const int MAXN=1003; int u[MAXN]; int find(int p) { if(p==u[p]) { return u[p]; }else { return u[p]=find(u[p]); } } void connect(int a,int b) { int f1=find(a); int f2=find(b); if(f1<f2) { u[f2]=f1; }else { u[f1]=f2; } } void init() { int i=0; for(i=0;i<=MAXN-1;i++) { u[i]=i; } } int main() { int T; cin>>T; while(T--) { set<int>s; int n,m; int i; init(); cin>>n>>m; while(m--) { int n1,n2; cin>>n1>>n2; connect(n1,n2); } for(i=n;i>=1;i--) { s.insert(find(i)); } cout<<s.size()<<endl; } return 0; }
本博客(http://www.cnblogs.com/cj695/)未标明转载的内容均为本站原创,非商业用途转载时请署名(77695)并注明来源(http://www.cnblogs.com/cj695/)。商业用途请联系作者(77695) QQ:646710030。作者(77695)保留本博客所有内容的一切权利。
独立博客:http://nfeng.cc/
独立博客:http://nfeng.cc/