poj 2524 Ubiquitous Religions --- 并查集

来源:互联网 发布:仿淘宝 下拉刷新 编辑:程序博客网 时间:2024/05/16 15:36

并查集求不相交集合的个数 模板


#include <iostream>#include <cstring>#include <string>#include <cstdio>#include <cmath>#include <algorithm>#include <vector>#include <queue>#include <map>#define inf 0x3f3f3f3f#define ll __int64using namespace std;int r[50005],n,m,vis[50005],ans;int root(int a){    if(r[a]==a) return a;    else return r[a]=root(r[a]);}void merge(int a,int b){    int ra,rb;    ra=root(a);    rb=root(b);    if(ra==rb) return;    ans--;//若两个属于同一集合 则合并 并把总数减1    if(ra<rb)        r[rb]=ra;    else r[ra]=rb;}int main(){    int i,j,cnt=0;    while(scanf("%d%d",&n,&m)&&(n||m))    {        cnt++;        ans=n;        for(i=0;i<=n;i++)            r[i]=i;        while(m--)        {            scanf("%d%d",&i,&j);            merge(i,j);        }        printf("Case %d: %d\n",cnt,ans);    }    return 0;}


0 0
原创粉丝点击