poj 2524 Ubiquitous Religions

来源:互联网 发布:现代软件学院 编辑:程序博客网 时间:2024/06/05 08:52

并查集

然而x_union还不是很懂

#include <iostream>using namespace std;int x_path[50005];int x_root[50005];int answer;int find_set(int x){    if (x!=x_path[x]) {        x_path[x]=find_set(x_path[x]);    }    return x_path[x];}void union_x(int x,int y){    x=find_set(x);    y=find_set(y);    if (x==y) {        return;    }    answer--;    if (x_root[x]>x_root[y]) {        x_path[y]=x;    }    else    {        x_path[x]=y;        if (x_root[x]==x_root[y]) {            x_root[y]++;        }    }}int main() {    int count=0;    int m,n,i;    int x,y;    while (cin>>n>>m) {        count++;        if (m==0&&n==0) {            return 0;        }        for (i=0; i<n; i++) {            x_path[i]=i;            x_root[i]=0;        }        answer=n;        for (i=0; i<m; i++) {            cin>>x>>y;            union_x(x, y);        }        //Case 1: 1        cout<<"Case "<<count<<": "<<answer<<endl;    }    return 0;}

0 0
原创粉丝点击