<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      RodneyX

      博客園 首頁 新隨筆 聯(lián)系 訂閱 管理

      并查集是一種簡單而有用的數(shù)據(jù)結(jié)構(gòu),一般是用數(shù)組來實(shí)現(xiàn),數(shù)組下標(biāo)是元素編號,而數(shù)組內(nèi)容存儲的是元素所在集合的根(或者是按樹形組織下的該元素前驅(qū),而根這個概念本身也是樹這一數(shù)據(jù)結(jié)構(gòu)的概念)

      并查集的操作非常簡單包括初始化并查集,查詢元素所屬的集合(用根元素來標(biāo)識一個集合),合并兩個不相交的集合

      1. 初始化并查集:在以數(shù)組下標(biāo)為元素編號的情況下,初始化需要將每個元素作為一個集合,所以可以將數(shù)組元素全部置為-1這一非法下標(biāo)值,事實(shí)上數(shù)組下標(biāo)未根元素的值的絕對值就是集合所含元素個數(shù)

      2. 查詢元素所屬的集合:數(shù)組存儲的是下標(biāo)元素對應(yīng)的前驅(qū),所以一直往前找到根元素即可

      3. 合并兩個不相交的集合:只需將一個集合的根元素前驅(qū)設(shè)置為另一集合的根即可

      針對并查集有兩種優(yōu)化,都是為了讓查詢路勁盡可能短,包括路徑壓縮以及按秩合并

      1. 路徑壓縮:在查詢某元素的根時,可以將這個元素以及查詢路徑上的元素的前驅(qū)置為根

      2. 按秩合并:合并時將元素數(shù)量小的集合合并到大集合中

      所以有如下實(shí)現(xiàn)

      void init_disjointSet(int S[], int size)
      {
          for (int i = 0; i < size; ++i)
              S[i] = -1;
      }
      
      int root_disjointSet(int S[], int size, int x)	//這個函數(shù)名一般為find
      {
          if (x < 0 || x >= size)
              return -1;
          /* 被注釋掉的是未優(yōu)化實(shí)現(xiàn)
          while(S[x] >= 0)
              x = S[x];
          */
          int root_x = x;
          while (S[root_x] >= 0) // 查詢所在集合
              root_x = S[root_x];
          int current;
          while (S[x] >= 0)  // 執(zhí)行路徑壓縮
          {
              current = x;
              x = S[x]; // x指向其父節(jié)點(diǎn)
              S[current] = root_x;
          }
          return root_x;
      }
      
      int union_disjointSet(int S[], int size, int x, int y)
      {
          if (x < 0 || x >= size || y < 0 || y >= size)
              return -1;
          int root_x = root_disjointSet(S, size, x), root_y = root_disjointSet(S, size, y);
          if (root_x == root_y)  // 是兩個不同集合才能合并
              return -1;
          /* 被注釋掉的是未優(yōu)化實(shí)現(xiàn)
          S[root_x] += S[root_y];
          S[root_y] = root_x;
          */
          if (S[root_x] < S[root_y])
          { // x根下節(jié)點(diǎn)多
              S[root_x] += S[root_y];
              S[root_y] = root_x; // 將小樹y加入大樹x
          }
          else
          {
              S[root_y] += S[root_x];
              S[root_x] = root_y;
          }
      
          return 1;
      }
      
      posted on 2025-07-31 11:55  RodneyX  閱讀(31)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲av久久精品狠狠爱av| 国产成人亚洲精品狼色在线| 不卡乱辈伦在线看中文字幕| 亚洲青青草视频在线播放| 人妻在线中文字幕| 国产精品午夜福利在线观看| 亚洲精品乱码久久久久久中文字幕 | 随州市| 国产精品国产三级国产an| 午夜福利高清在线观看| 亚洲 自拍 另类小说综合图区| 亚洲av成人网人人蜜臀| 色偷偷天堂av狠狠狠在| 91精品久久久久久无码人妻| 国产高清在线男人的天堂| 国产gaysexchina男外卖| 99精品热在线在线观看视| 免费国精产品wnw2544| 在线无码午夜福利高潮视频| 无码激情亚洲一区| 真实国产精品视频400部| 99精品国产一区二区三 | 久草热在线视频免费播放| 极品少妇被后入内射视| 免费无码又爽又刺激高潮虎虎视频 | 亚洲人成电影在线天堂色| 国产精品无码一区二区牛牛| 亚洲一级特黄大片在线播放| 制服丝袜国产精品| 99福利一区二区视频| 成人免费在线播放av| 午夜福利国产精品视频| 日韩精品射精管理在线观看| 99re6这里有精品热视频 | 天天躁日日躁狠狠躁中文字幕| 国产成人亚洲无码淙合青草| 亚洲国产成人无码av在线影院 | av无码精品一区二区乱子| 九台市| 亚洲av色香蕉一区二区| 成人一区二区三区久久精品|