首页 > 科技 > > 正文
2025-03-03 02:19:25

✨ C++ 写并查集算法模板 📚

导读 大家好,今天给大家分享一个C++中实现并查集(Union-Find)算法的模板代码。并查集是一种数据结构,主要用于处理一些不相交集合的合并及查

大家好,今天给大家分享一个C++中实现并查集(Union-Find)算法的模板代码。并查集是一种数据结构,主要用于处理一些不相交集合的合并及查询问题。它在解决图论中的连通性问题时非常有用。下面是一个基本的并查集实现模板,包含了必要的头文件。

```cpp

include // 😎 对于输入输出操作

include // 📊 用于基本的数据类型定义

include // 🗂️ 向量容器,用于存储每个节点的信息

include // 🔧 算法库,用于排序和查找等操作

using namespace std;

class UnionFind {

private:

vector parent; // 每个节点的父节点

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;

}

```

希望这个简单的模板能够帮助你在处理相关问题时更加得心应手!如果有任何疑问或需要进一步的帮助,请随时留言交流。🚀