শুক্রবার, ২৪ মার্চ, ২০১৭

UVA 11503 - Virtual Friends

#include <bits/stdc++.h>
using namespace std;
long par[200005]={0},res[200005]={0};
long find(long r)
{
    if(par[r]==r)
    {
        return r;
    }
    else
        return find(par[r]);
}
long checkunion(long x,long y)
{
    long u=find(x);
    long v=find(y);
    if(u!=v)
    {
        par[v]=u;
        res[v]+=res[u];
    }
    return res[u]=res[v];
}
main()
{
    long ts;
    cin>>ts;
    while(ts--)
    {
        long n,i,k=1;
        map<string,long>mp;
        string s1,s2;
        cin>>n;
        for(i=1;i<=2*n;i++)
        {
            par[i]=i;
            res[i]=1;
        }
        for(i=1;i<=n;i++)
        {
            cin>>s1>>s2;
            if(mp[s1]==0)
            {
                mp[s1]=k++;
            }
            if(mp[s2]==0)
            {
                mp[s2]=k++;
            }
            long ans=checkunion(mp[s1],mp[s2]);
            cout<<ans<<endl;
        }
    }
}

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন

Factorization with prime Sieve

vector <int> prime; char sieve[1000009]; int N=1000009; void primeSieve ( ) { sieve[0] = sieve[1] = 1; prime.push_back(2); ...