#include<cstdio>
int bcj[30000];
int d[30000];
int tail[30000];
int abs(int a)
{
return (a>0?a:-a);
}
int find(int a)
{
if(bcj[a]==a)
{
return a;
}
else
{
int of=bcj[a];
bcj[a]=find(of);
tail[a]=tail[bcj[a]];
d[a]+=d[of];
return find(of);
}
}
void merge(int a,int b,int w)
{
int fa=find(a),fb=find(b);
if(fa!=fb)
{
bcj[fa]=fb;
d[fa]=d[b]-d[a]+w;
tail[fb]=tail[fa];
}
}
int dis(int a,int b)
{
if(find(a)==find(b))
{
return abs(d[a]-d[b]);
}
return 0;
}
int main()
{
int n,i;
char sr[2];
int a,b;
for(i=0;i<30000;++i)
{
tail[i]=bcj[i]=i;
}
scanf("%d",&n);
for(i=0;i<n;++i)
{
scanf("%s%d%d",sr,&a,&b);
a--;
b--;
if(sr[0]=='M')
{
merge(find(a),tail[b],1);
}
else
{
printf("%d\n",dis(a,b)-1);
}
for(int i=0;i<4;++i)
{
printf("%d ",d[i]);
}
printf("\n");
for(int i=0;i<4;++i)
{
printf("%d ",bcj[i]);
}
printf("\n");
for(int i=0;i<4;++i)
{
printf("%d ",tail[i]);
}
printf("\n");
}
return 0;
}
码风还比较清爽,求调