求解((
  • 板块灌水区
  • 楼主zszhao
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/1/31 14:11
  • 上次更新2023/10/24 02:23:38
查看原帖
求解((
546568
zszhao楼主2023/1/31 14:11

为什么我的并查集压缩路径没有fa【i】=i; 是MLE,但答案完全一样,代码如下:

#include<bits/stdc++.h>
using namespace std;
int fa[10005];
int n,m;
int z,a,b;
int find(int x){
	if(fa[x]==0) return x;
	else return fa[x]=find(fa[x]);
}
int main(){
	cin>>n>>m;
//	for(int i=1;i<=n;i++) fa[i]=i;
	for(int i=1;i<=m;i++){
		cin>>z>>a>>b;
		if(z==1){
			fa[find(a)]=find(b);
		}
		else{
			int xx=find(a),yy=find(b);
			if(xx==yy) cout<<'Y'<<endl;
			else cout<<'N'<<endl;
		}
	}
	return 0;
}

加上则是AC,如下:

#include<bits/stdc++.h>
using namespace std;
int fa[10005];
int n,m;
int z,a,b;
int find(int x){
	if(fa[x]==x) return x;
	else return fa[x]=find(fa[x]);
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++) fa[i]=i;
	for(int i=1;i<=m;i++){
		cin>>z>>a>>b;
		if(z==1){
			fa[find(a)]=find(b);
		}
		else{
			int xx=find(a),yy=find(b);
			if(xx==yy) cout<<'Y'<<endl;
			else cout<<'N'<<endl;
		}
	}
	return 0;
}

求解答

2023/1/31 14:11
加载中...