并查集题目(1)

今天的题目就只是版得不能再版并查集了, 至于我为什么会打呢 因为我的并查集实在是太过于惨不忍睹了,淦!


洛谷 P3367 【模板】并查集
题目
这个名字就告诉我们这是一道水题
附一个我很喜欢的并查集博客的链接

下附楼主自己重新打的代码

#include 
const int maxn = 10005;
int a[maxn];
int m, n;
int find_father(int x){
	if(a[x] != x){
		a[x] = find_father(a[x]);
	}
	return a[x];
}
void join(int x, int y){
	int x_gen = find_father(x), y_gen = find_father(y);
	if(x_gen != y_gen){
		a[y_gen] = x_gen;
	}
}
int main() {
	scanf("%d %d", &n, &m);
	int i_a, i_b, i_c;
	for(int i = 1; i <= n; i ++){
		a[i] = i;
	}
	for(int i = 1; i <= m; i ++){
		scanf("%d %d %d", &i_a, &i_b, &i_c);
		if(i_a == 2){
			if(find_father(a[i_b]) != find_father(a[i_c]))printf("N\n");
			else printf("Y\n");
		}
		else{
			join(i_b, i_c);
		}
	}
	return 0;
}

你可能感兴趣的:(并查集)