并查集

并查集

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
const int N=2e5+1145;
int fa[N];
int n,m;
int find(int x){
	return fa[x]==x?x:fa[x]=find(fa[x]);
}
void unionn(int x,int y){
	fa[find(x)]=find(y);
	return;
}

void init(){
	for(int i=1;i<=n;i++){
		fa[i]=i;
	}
}
void solve(){
	cin>>n>>m;
	init();
	for(int i=1;i<=m;i++){
		int opt,x,y;
		cin>>opt>>x>>y;
		if(opt==1){
			unionn(x,y);
		}
		if(opt==2){
			if(find(x)==find(y)){
				cout<<"Y"<<endl;
			}
			else cout<<"N"<<endl;
		}
	}
}
signed main(){
	IOS
	solve();
	return 0; 
}
posted @ 2025-11-26 13:53  10mbps_十兆網路  阅读(0)  评论(0)    收藏  举报