计蒜客练习题:网络交友
题目
样例
代码
#include<iostream>
#include<map>
using namespace std;
map<string,int> fff;
int n,m,p,father[5005],top=1,num;
string a,b;
void init()
{
for(int i=1;i<=n;++i) father[i]=i;
}
int get(int x)
{
if(father[x]==x) return x;
return father[x]=get(father[x]);
}
void merge(int x,int y)
{
x=get(x);
y=get(y);
if(x!=y) father[y]=x;
}
int main()
{
cin>>n;
init();
for(int i=1;i<=n;i++)
{
cin>>a>>b;
if(!fff[a]) {fff[a]=top;top++;}
if(!fff[b]) {fff[b]=top;top++;}
merge(fff[a],fff[b]);
num=0;
int x=get(fff[a]);
for(int i=1;i<top;i++)
if(x==get(i)) num++;
cout<<num<<endl;
}
return 0;
}