POJ 2524.Ubiquitous Religions

基础并查集水题,可以拿来练手和复习

题目链接

#include 
#include 
#define MAXN 50005
using namespace std;

int par[MAXN];
int vis[MAXN];
int get_root(int a)
{
    if(par[a]!=a)
    {
        par[a] = get_root(par[a]);//压缩路径算法
    }
    return par[a];
}
void merge(int a,int b)
{
    int p1 = get_root(a);
    int p2 = get_root(b);
    if(p1==p2)
    {
        return ;
    }
    else
    {
        par[p2] = p1;//这里还可以加入其他的功能
    }
}

int main(void)
{
    int js = 0;
    while(1)
    {

        memset(vis,0,sizeof(vis));
        int n,m;
        scanf("%d%d",&n,&m);
        if(n==0&&m==0)
        {
            break;
        }
        for(int i=1;i<=n;i++)
        {
            par[i] = i;//这一步千万不要忘记,是一个初始化的内容
        }
        for(int i=0;i

 

你可能感兴趣的:(数据结构,集合)