玄关求助挺急的
查看原帖
玄关求助挺急的
1108111
XYY62012楼主2024/12/11 20:39

为什么只拿到30pts

自己看了代码思路清晰没有问题啊

#include<bits/stdc++.h>
using namespace std;
int n,m;
int father[529001];
int ff(int v){//寻找根判断是否在同一个合集 路径压缩
	if(father[v]==v){
		return v;
	}else{
		father[v]=ff(father[v]);
	}
	return father[v];
}
void unnion(int a,int b){
	int fa,fb;
	fa=ff(a),fb=ff(b);
	if(fa!=fb){
		father[b]=a;
	}
}
void find(int a,int b){
	int fa,fb;
	fa=ff(a),fb=ff(b);
	if(fa==fb){
		cout<<'Y'<<endl;
	}else{
		cout<<'N'<<endl;
	}
}
int main(){
int z,x,y;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		father[i]=i;//初始化
	}
	for(int i=1;i<=m;i++){
		cin>>z>>x>>y;
		if(z==1){
			unnion(x,y);
		}else{
			find(x,y);
		}
	}
}
2024/12/11 20:39
加载中...