MLE!
查看原帖
MLE!
1050483
zjr2014楼主2024/10/16 19:40
#include<bits/stdc++.h>
using namespace std;
int read(){
	int r=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9')r=(r<<3)+(r<<1)+(c^48),c=getchar();
	return r*f;
}
void file(string s){
	s+=".in";
	freopen(s.c_str(),"r",stdin);
	s.pop_back();
	s.pop_back();
	s.pop_back();
	s+=".out";
	freopen(s.c_str(),"w",stdout);
}
void IOS(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
}
int n,m,k;
int fa[20001];
string its[20001];
map<string,int>sti;
string s,t;
int find(string s){
	return fa[sti[s]]==0?sti[s]:fa[sti[s]]=find(its[fa[sti[s]]]);
}
void merge(string s,string t){
	fa[find(s)]=find(t);
}
int main(){
	IOS();
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>s;
		sti[s]=i;
		its[i]=s;
	}
	for(int i=1;i<=m;i++){
		cin>>s>>t;
		merge(s,t);
	}
	cin>>k;
	for(int i=1;i<=k;i++){
		cin>>s>>t;
		if(find(s)==find(t)){
			cout<<"Yes.\n";
		}
		else{
			cout<<"No.\n";
		}
	}
	return 0;
}
2024/10/16 19:40
加载中...