欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C++并查集的实现

发布时间:2023/12/4 c/c++ 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C++并查集的实现 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
  • 编号代表每一个元素。
  • 数组par表示的是父亲的编号,也就是前驱。
  • par[x] = x时,x是所在的树的根。
  • 代码如下:

    #include <iostream> using namespace std; const int N = 100010; int par[N], ranks[N];void init(int n) { //初始化n个元素for (int i = 1; i <= n; i++) {par[i] = i;ranks[i] = 0;} }int find(int x) { //查询树的根if (par[x] == x)return x;elsereturn par[x] = find(par[x]); }void unit(int x, int y) { //合并x和y所属的集合x = find(x);y = find(y);if (x == y)return ;if (ranks[x] < ranks[y])par[x] = y;else {par[y] = x;if (ranks[x] == ranks[y])ranks[x]++;} }bool same(int x, int y) { //判断x和y是否属于同一个集合return find(x) == find(y); }

    总结

    以上是生活随笔为你收集整理的C++并查集的实现的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。