求DALAO
查看原帖
求DALAO
939526
jy20091121楼主2023/9/13 20:28
#include<bits/stdc++.h>
using namespace std;
int fin[1233123];
int find(int k){
	if(fin[k]==k) return k;
	return fin[k]=find(fin[k]);
}
int n,m;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++) fin[i]=i;
	for(int i=1;i<=m;i++){
	int x,y,z;
	cin>>z>>x>>y;
	if(z==1){
	fin[find(y)]=find(fin[x]);	
	}
	if(z==2){
	if(find(x)==find(y)){
	cout<<"Y"<<"\n";	
	}
	else{
	cout<<"N"<<"\n";	
	}
	}
	}	
	return 0;
}

为什么z==1时候 不能是fin[fin[y]]=find(fin[x])

而是fin[find(y)]=find(fin[x]) 求大佬指点没接触过并查集

2023/9/13 20:28
加载中...