code:
#include<iostream>
#include<fstream>
#include<cstdio>
#include<cstdlib>
#include<cctype>
#include<climits>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<map>
#include<queue>
#include<ctime>
#include<string>
#include<cstring>
#include<algorithm>
#include<unordered_map>
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,a,n) for (int i=a;i>=n;i--)
#define pb push_back
#define ll long long
#define N 20005
using namespace std;
int fa[N], rk[N];
unordered_map<string, int> uom;
void init(){
for(int i=0; i<N; i++){
fa[i]=i;
rk[i]=1;
}
}
int find(int x){
if(fa[x]==x) return x;
fa[x]=find(fa[x]);
return fa[x];
}
void merge(int a, int b){
int x=find(a), y=find(b);
if(rk[x]<=rk[y]) fa[x]=y;
else fa[y]=x;
if(rk[x] == rk[y] && x != y) rk[y]++;
}
void print(){
int i=1;
for(auto it=uom.begin(); it!=uom.end(); it++){
cout<<i++<<": "<<it->first<<" "<<it->second<<endl;
}
}
int main(){
init();
int n, m, num=1;
cin>>n>>m;
char c=getchar();
string name;
rep(i, 1, n) { getline(cin, name); /*cout<<"name="<<name<<endl;*/ uom[name]=num++; }
//print();
rep(i, 1, m){
string a, b;
getline(cin, a, ' '); getline(cin, b, '\n');
merge(uom[a], uom[b]);
}
int k;
cin>>k;
c=getchar();
//ofstream cout("C:\\out.txt");
while(k--){
string a, b;
getline(cin, a, ' '); getline(cin, b, '\n');
if(find(uom[a])==find(uom[b])) cout<<"Yes."<<endl;
else cout<<"No."<<endl;
}
return 0;
}
在#1样例中输出都是一样的,但是却WA,不知怎么回事QwQ