酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

并查集三种操作揭秘:查找、合并与初始化及 C++ 代码实现要点

以下是并查集常见的三种操作及示例代码(使用 C++语言): ```cpp #include <iostream> using namespace std; // 查找根节点 int find(int parent[], int i) { // 如果当前节点不是根节点,递归查找根节点 if (parent[i]!= i) { parent[i] = find(parent, parent[i]); } return parent[i]; } // 合并两个集合 void unionSet(int parent[], int x, int y) { int xRoot = find(parent, x); int yRoot = find(parent, y); parent[xRoot] = yRoot; } // 初始化并查集 void makeSet(int parent[], int n) { for (int i = 0; i < n; i++) { parent[i] = i; } } int main() { int parent[10]; makeSet(parent, 10); unionSet(parent, 0, 1); unionSet(parent, 1, 2); int root = find(parent, 0); cout << "Root of 0 is: " << root << endl; return 0; } ``` 对于这段代码,需要注意以下 3 点逻辑: 1. 在查找根节点时,要通过递归确保找到最终的根节点,避免错误的合并。 2. 合并操作时,要确保将一个集合的根节点指向另一个集合的根节点。 3. 初始化操作要将每个元素都初始化为自身,形成独立的集合。 ######[AI写代码神器 | 365点数解答 | 2024-12-11 20:52:57]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]