map+并查集

#include<bits/stdc++.h>
using namespace std;
map<string,string>mp;

string find(string x){
    return mp[x]==x?mp[x]:mp[x]=find(mp[x]);
}

int main(){
    int n,m;
    string _;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>_;
        mp[_]=_;
    }
    for(int i=1;i<=m;i++){
        int op;
        string t,u;
        cin>>op>>t>>u;
        string x=find(t),y=find(u);
        if(op==1){
            mp[x]=y;
        }
        else{
            if(x==y)cout<<1<<endl;
            else cout<<0<<endl;
        }
    }
    return 0;
}