#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <map>
#include <algorithm>
#include <cmath>
using namespace std;
int fa[30005],dis[30005],ran[30005];
int find(int x){
if(x!=fa[x]){
int t=fa[x];
fa[x]=find(t);
dis[x]+=dis[t];
}
return fa[x];
}
void merge(int x,int y){//x喊y为爹
int fx=find(x),fy=find(y);
fa[fx]=fy;
dis[fx]=ran[fy];
ran[fy]+=ran[fx];
}
int main(){
for(int i=1;i<=30005;i++){
fa[i]=i;
dis[i]=0;
ran[i]=1;
}
int n;
scanf("%d",&n);
char c;
while(n--){
scanf(" %c",&c);
int x,y;
if(c=='M'){
scanf("%d%d",&x,&y);
merge(x,y);
}else{
scanf("%d",&x);
find(x);
printf("%d\n",dis[x]);
}
}
return 0;
}
poj Cube Stacking
最新推荐文章于 2024-09-13 21:18:50 发布