10608 - Friends

#include<stdio.h>
#include<string.h>
int par[30001];
int arr[500001],arr1[500001];
int khoj_rep(int r)
{
    if(par[r]==r)
    {
        return r;
    }
    else
    {
        return par[r]=khoj_rep(par[r]);
    }
}
int khoj_rep1(int r)
{
    if(par[r]==r)
    {
        return r;
    }
    else
    {
        return par[r]=khoj_rep(par[r]);
    }
}
int main()
{
    long long int t,n,m,i,j,k,a,b,u,v,count;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lld%lld",&n,&m);
        for(i=1; i<=n; i++)
        {
            par[i]=i;
        }
        for(j=1; j<=m; j++)
        {
            scanf("%lld%lld",&a,&b);
            arr[j]=a;
            arr1[j]=b;
            u=khoj_rep(a);
            v=khoj_rep(b);
            if(u==v)
            {
                continue;
            }
            else
            {
                par[u]=v;
            }
        }
        for(k=1; k<=m; k++)
        {
            u=khoj_rep1(arr[k]);
            v=khoj_rep1(arr1[k]);
            if(u==v)
            {
                continue;
            }
            else
            {
                par[u]=v;
            }
        }
        long long int highest=0;
        for(j=1; j<=n; j++)
        {
            if(par[j]!=0)
            {
                count=1;
                for(k=j+1; k<=n; k++)
                {
                    if(par[j]==par[k])
                    {
                        count++;
                    }
                }
                if(highest<count)
                {
                    highest=count;
                }
            }
        }
        printf("%lld\n",highest);
        memset(par,0,sizeof(par));
        memset(arr,0,sizeof(arr));
        memset(arr1,0,sizeof(arr1));
    }
    return 0;
}

0 comments: (+add yours?)