#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;
}
}
}
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;
}
}
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন