简易的并查集
程序员文章站
2024-03-19 13:27:16
...
#include<bits/stdc++.h>
using namespace std;
/*
简易版的并查集:
集合的元素使用数组的下标。集合的数据是它的父结点
*/
int getRoot(int *parent, int x)
{
if(parent[x] < 0)
return x;
return parent[x] = getRoot(parent, parent[x]);
}
void unionSets(int *parent, int x, int y)
{
int rx = getRoot(parent, x);
int ry = getRoot(parent, y);
if(parent[rx] < parent[ry])
{
parent[rx] += parent[ry];
parent[ry] = rx;
}else{
parent[ry] += parent[rx];
parent[rx] = ry;
}
}
int main()
{
int arr[6] = {-3, 0, 1, 2, -1, 4};
cout << getRoot(arr, 3) << endl;
cout << getRoot(arr, 5) << endl;
unionSets(arr, 3, 5);
cout << getRoot(arr, 5) << endl;
return 0;
}
上一篇: 会话标识未更新问题
下一篇: 解决:No configuration found for the specified action 博客分类: struts2 StrutsJSPApacheXML工作
推荐阅读
-
简易的并查集
-
并查集【模板】
-
Codeforces Round #345 (Div. 1) C. Table Compression dp+并查集
-
Code Forces 650 C Table Compression(并查集)
-
CF 651.E-Table Compression---进阶并查集
-
Codeforces #345div1 C Table Compression (650C) 并查集
-
【BZOJ3674】可持久化并查集加强版 (可持久化并查集裸题)
-
UVA 11987 Almost Union-Find (虚点+并查集)
-
stl之rope大法好及可持久化并查集用法
-
HYSBZ 3673 可持久化并查集 by zky