10583 - Ubiquitous Religions

#include<stdio.h>
long long int par[50001],check[50001];
void par1(int n)
{
    int i;
    for(i=1;i<=n;i++)
    {
        par[i]=i;
        check[i]=i;
    }
}
int khoj_rep(int r)
{
    if(par[r]==r)
    {
        return r;
    }
    else
    {
        return par[r]=khoj_rep(par[r]);
    }
}
int main()
{
    long long int a,b,u,v,n,m,i,j=0,count;
    while(scanf("%lld%lld",&n,&m)==2)
    {
        j++;
        if(n==0&&m==0)
        {
            break;
        }
        par1(n);
        count=0;
        for(i=1;i<=m;i++)
        {
            scanf("%lld%lld",&a,&b);
            u=khoj_rep(a);
            v=khoj_rep(b);
            if(u==v)
            {
                continue;
            }
            else
            {
                par[u]=v;
            }
        }
        for(i=1;i<=n;i++)
        {
            if(par[i]==check[i])
            {
                count++;
            }
        }
        printf("Case %lld: %lld\n",j,count);
    }
    return 0;
}

0 comments: (+add yours?)