#define MAX 10000
int set[MAX];
int rank[MAX];
// Initialize
void init(){for (int i = 0; i < MAX; ++i) set[i] = i;}
// Find
int findSet(int v){
if (set[v] != v) set[v] = findSet(set[v]);
return set[v];
}
// Union by Rank
bool joinSet(int x, int y){
int fx = findSet(x), fy = findSet(y);
if (fx == fy) return true;
if (rank[fx] > rank[fy]) set[fy] = fx;
else{
set[fx] = fy;
if (rank[fx] == rank[fy]) ++rank[fy];
return false;
}
}并查集
最新推荐文章于 2025-05-05 10:00:00 发布
本文详细介绍了并查集数据结构的实现方法,包括初始化、查找和按秩合并操作,并提供了完整的代码示例。
1861

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



