题目链接:
http://hihocoder.com/problemset/problem/1066
解题思路题目已经给出
直接贴代码:
#include<iostream>
#include<map>
#include<string>
using namespace std;
map<string,string> name;
string find_represent(string s){
if(name[s] == s){
return s;
}
else{
name[s] = find_represent(name[s]); //统一represent值,合并集合
return name[s];
}
}
int main(){
int n;
cin>>n;
for(int i = 0; i < n; i++){
int a;
string name1,name2;
cin>>a;
cin>>name1;
cin>>name2;
if(name[name1] == ""){
name[name1] = name1;
}
if(name[name2] == ""){
name[name2] = name2;
}
if(!a){
name[find_represent(name[name2])] = find_represent(name1); //合并集合
}
else{
if(find_represent(name1) == find_represent(name2)){ //查询集合
cout<<"yes"<<endl;
}else{
cout<<"no"<<endl;
}
}
}
}