为什么样例第一个错了?
查看原帖
为什么样例第一个错了?
957610
dinghansun楼主2024/6/10 14:00

用的是模板

#include<iostream>
#include<map>
#include<string>
using namespace std;
int n,m,p;
map<string,string> f;
string sx,sy;
string find(string x){
	if(f[x]==x) return x;
	return f[x]=find(f[x]);
}
void join(string x,string y){
	if(find(x)!=find(y)){
		f[find(x)]=find(y);
	}
	return;
}
int main()
{
    string s;
	cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>s;
	for(int i=1;i<=m;i++){
		cin>>sx>>sy;
		join(sx,sy);
	}
    cin>>p;
	for(int i=1;i<=p;i++){
		cin>>sx>>sy;
		if(find(sx)==find(sy)){
			cout<<"Yes."<<endl;
		}
		else cout<<"No."<<endl;
	}
	return 0;
}
2024/6/10 14:00
加载中...