1. 程式人生 > >【模板·並查集】洛谷 P3367 【模板】並查集

【模板·並查集】洛谷 P3367 【模板】並查集

題目:並查集

思路: 複習…… 第一次提交忘寫路徑壓縮T了…… 結論:打過再多遍的模板也要檢查一下啊……

程式碼:

#include<bits/stdc++.h>
using namespace std;

#define maxn 10000
#define read(x) scanf("%d",&x)

int n,m;
int fa[maxn+5];

int find(int x) {
	return fa[x]==0?x:fa[x]=find(fa[x]);
}

void merge(int x,int y){
	int fa1=find(x),fa2=find(y);
	if
(fa1==fa2) return ; fa[fa1]=fa2; } bool query(int x,int y) { int fa1=find(x),fa2=find(y); if(fa1==fa2) return true; return false; } int main() { read(n),read(m); while(m--) { int opr,x,y; read(opr),read(x),read(y); if(opr==1) { merge(x,y); } else { if(query(x,y)) printf("Y\n");
else printf("N\n"); } } return 0; }