http://acm.hdu.edu.cn/showproblem.php?pid=1232&&并查集应用

来源:互联网 发布:淘宝上欧货是什么意思 编辑:程序博客网 时间:2024/06/10 22:50

水题进行时。。。。加油(*^__^*) 嘻嘻……。。。

#include<iostream>#include<string.h>#include<algorithm>#include<limits.h>#define N 1005#define  FOR(i,s,t) for(int i=(s);i<=t;++i)using namespace std;int n,m,tot;int father[N];void make_set(){ FOR(i,1,n)   father[i]=i;   tot=n;   }int  find_set(int a){    while(a!=father[a])           a=father[a];      return a; } void Union(int a,int b) {    int x=find_set(a);       int y=find_set(b);       if(x!=y)       {     father[y]=x;               tot--;       } } int main() {   while(cin>>n&&n)       {    cin>>m;            make_set();            FOR(i,1,m)            {  int a,b;               cin>>a>>b;               Union(a,b);             }             cout<<tot-1<<endl;             } return 0;     }


原创粉丝点击