C++ 如何理解并查集,并查集的数据如何存储,关于并查集的主要代码
时间: 2023-11-18 17:55:39 浏览: 87
数据结构+并查集+并查集C++实现
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。并查集支持两种操作:查找(Find)和合并(Union)。其中查找操作用于确定元素属于哪一个子集。合并操作则用于将两个子集合并成一个集合。并查集的数据可以使用数组或者map来存储,其中数组的下标表示元素,数组的值表示该元素所在的集合的代表元素。关于并查集的主要代码如下:
```
class UnionFind{
private:
vector<int> parent;
int count;
public:
UnionFind(int n){
count = n;
parent.resize(n);
for(int i=0;i<n;i++){
parent[i] = i;
}
}
int find(int p){
while(p!=parent[p]){
parent[p] = parent[parent[p]];
p = parent[p];
}
return p;
}
void unite(int p, int q){
int rootP = find(p);
int rootQ = find(q);
if(rootP==rootQ) return;
parent[rootP] = rootQ;
count--;
}
int getCount(){
return count;
}
};
```
其中,find函数用于查找元素所在的集合的代表元素,unite函数用于合并两个集合,getCount函数用于获取当前并查集中集合的数量。
阅读全文