···
include[HTML_REMOVED]
using namespace std;
const int N = 1e5+10;
int n,m;
int p[N]; //父节点
int find(int x){//返回x的祖宗节点 + 路径压缩
if(p[x]!=x)p[x]=find(p[x]);
return p[x];
}
int main(){
cin>>n>>m;
for(int i=1;i<n;i++)p[i]=i;
while(m--){
char op[2];
int a,b;
scanf("%s",&op);
scanf("%d %d",&a,&b);
if(op[0]=='M') p[find(a)]=p[find(b)]; //合并区间
else{
if(find(a)==find(b))puts("Yes");
else
puts("No");
}
}
return 0;
}
···