zoukankan      html  css  js  c++  java
  • 并查集

    并查集的以下几种优化和类型。

    1.路径压缩 

     1 int pre[maxv];
     2 void init(int n)
     3 {
     4     /*初始化w*/
     5     for (int i= 0; i<= n; i ++) pre[i]= i;
     6 }
     7 int findFa(int x)
     8 {
     9     /*寻找树的根节点,并路径压缩w*/
    10     if (pre[x]== x) return x;
    11     return pre[x]= findFa(pre[x]);
    12 }
    13 void join(int x, int y)
    14 {
    15     /*把x 所在的树并在y 所在的树的根节点下w*/
    16     pre[findFa(x)]= findFa(y);
    17 }

    2.按秩合并 

     1 int pre[maxv];
     2 int _rank[maxv];
     3 void init(int n)
     4 {
     5     for (int i= 0; i<= n; i ++) pre[i]= i;
     6     for (int i= 0; i<= n; i ++) _rank[i]= 1;
     7 }
     8 int findFa(int x)
     9 {
    10     /*寻找树的根节点,并路径压缩w*/
    11     if (pre[x]== x) return x;
    12     return pre[x]= findFa(pre[x]);
    13 }
    14 void join(int x, int y)
    15 {
    16     /*按秩合并,秩为树的大小*/
    17     int fx= findFa(x);
    18     int fy= findFa(y);
    19     if (_rank[fx]> _rank[fy])
    20     {
    21         pre[fy]= fx;
    22         _rank[fx]= _rank[fx]+ _rank[fy];
    23     }
    24     else
    25     {
    26         pre[fx]= fy;
    27         _rank[fy]= _rank[fy]+ _rank[fx];
    28     }
    29 }
     1 int pre[maxv];
     2 int _rank[maxv];
     3 void init(int n)
     4 {
     5     for (int i= 0; i<= n; i ++) pre[i]= i;
     6     for (int i= 0; i<= n; i ++) _rank[i]= 1;
     7 }
     8 int findFa(int x)
     9 {
    10     /*寻找树的根节点,并路径压缩w*/
    11     if (pre[x]== x) return x;
    12     return pre[x]= findFa(pre[x]);
    13 }
    14 void join(int x, int y)
    15 {
    16     /*按秩合并,秩为树的高*/
    17     /*ps: 有路径压缩感觉这个没什么用*/
    18     int fx= findFa(x);
    19     int fy= findFa(y);
    20     if (_rank[fx]> _rank[fy])
    21     {
    22         pre[fy]= fx;
    23         _rank[fx]= min(_rank[fx], _rank[fy]+ 1);
    24     }
    25     else
    26     {
    27         pre[fx]= fy;
    28         _rank[fy]= min(_rank[fy], _rank[fx]+ 1);
    29     }
    30 }

    end;

  • 相关阅读:
    马克思主义哲学是否只是“抄袭”和断章取义了别人的思想
    马克思的思想说到底都是抄袭
    答郭沫若的《卖淫妇的饶舌》(节录)--马克思思想批判
    联系的普遍性
    辩证
    (实用篇)使用PHP生成PDF文档
    discuz!
    Access是什么?
    putty 与winscp 区别
    xshell 与 putty
  • 原文地址:https://www.cnblogs.com/Amaris-diana/p/11386758.html
Copyright © 2011-2022 走看看