【并查集】并查集模板:合并集合_拓扑学

【并查集】并查集模板:合并集合_ci_02

#include<iostream>
using namespace std;
const int N=100010;

int n,m;
int p[N];

int find(int 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 c;
        int a,b;
        cin>>c;
        cin>>a>>b;
        if(c=='M') p[find(a)]=find(b);
        else{
            if(find(a)==find(b))cout<<"Yes"<<endl;
            else cout<<"No"<<endl;
        }
    }
    
    return 0;
}