社区讨论

并查集一定要初始化自己为自己爹吗

P3367【模板】并查集参与者 6已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@mi7rrgr8
此快照首次捕获于
2025/11/21 02:33
4 个月前
此快照最后确认于
2025/11/21 02:33
4 个月前
查看原帖
好像不初始化判断是否为0也可以啊?还是初始化会对其他题有什么帮助?
CPP
#include <iostream>

using namespace std;
int father[10010];
int n, m;

int getf(int x)
{
	if (father[x]) return father[x] = getf(father[x]);
	return x;
}

void merge(int x, int y)
{
	int fx, fy;
	fx = getf(x); fy = getf(y);
	if (fx == fy) return;
	father[fy] = fx;
}

int main()
{
	cin >> n >> m;
	
	for (int i = 1; i <= m; i++) {
		int z, x, y;
		cin >> z >> x >> y;
		if (z == 1) merge(x, y);
		else {
			if (getf(x) == getf(y)) cout << 'Y' << endl;
			else cout << 'N' << endl;
		}
	}
}

回复

6 条回复,欢迎继续交流。

正在加载回复...