大家好,今天给大家分享一个C++中实现并查集(Union-Find)算法的模板代码。并查集是一种数据结构,主要用于处理一些不相交集合的合并及查询问题。它在解决图论中的连通性问题时非常有用。下面是一个基本的并查集实现模板,包含了必要的头文件。
```cpp
include
include
include
include
using namespace std;
class UnionFind {
private:
vector
public:
UnionFind(int n) { // 构造函数,初始化并查集
parent.resize(n);
for (int i = 0; i < n; ++i)
parent[i] = i;
}
int find(int x) { // 查找根节点
if (parent[x] != x)
parent[x] = find(parent[x]);
return parent[x];
}
void unite(int x, int y) { // 合并两个集合
int rootX = find(x);
int rootY = find(y);
if (rootX != rootY)
parent[rootX] = rootY;
}
};
// 示例用法
int main() {
UnionFind uf(10); // 创建一个包含10个元素的并查集
uf.unite(1, 2); // 将节点1和2合并
uf.unite(2, 3); // 将节点2和3合并
cout << "Root of node 3 is: " << uf.find(3) << endl; // 输出节点3的根节点
return 0;
}
```
希望这个简单的模板能够帮助你在处理相关问题时更加得心应手!如果有任何疑问或需要进一步的帮助,请随时留言交流。🚀