int f[1000]
int find(int u) {
if (f[u] != u) //如果u已经有父亲了(f[u]!=u),就找u父亲的父亲
f[u] = find(f[u]);
return f[u];
}
void Union(int x, int y) {
if (find(x) != find(y)) //如果x,y的父亲不一样,就让x的父亲改为y的父亲
f[find(x)] = find(y); //f[find(x)]还能顺便更新x的父亲
_16-并查集
于 2022-04-21 20:49:17 首次发布
该博客介绍了并查集(Disjoint Set)的数据结构及其优化——路径压缩。`find()`函数通过递归查找根节点实现路径压缩,提高查询效率。`Union()`函数则根据根节点判断元素归属同一集合,并进行合并操作。该算法常用于解决不相交集合问题。

被折叠的 条评论
为什么被折叠?



