並查集的一些理解

2021-10-17 11:10:03 字數 429 閱讀 2780

從最基本的並查集之後引申到帶權並查集 抽象出種類並查集 實際上都是維護乙個又乙個集合之間的關係

並查集主要寫兩個函式find和merge

find函式可以寫成路徑壓縮 或者 按秩合併 或者兩個同時寫(但一般單獨的路徑壓縮就可以了)

find函式需要注意的是在find函式內維護陣列 需要等回溯時再維護 否則父節點還沒被維護 先維護了子節點 便出現錯誤

merge函式比較簡單 就是將乙個樹根指向另外乙個樹根 也有需要注意的地方 當判斷兩個點之間的權值時 需要的是這兩個點的值 不要寫成兩點的樹根的值

帶權並查集或者種類並查集做題時有兩種方法:

一種是邊帶權 一種是擴充套件域

邊帶權就是用陣列維護 在find和merge時進行關係的維護

擴充套件域就是拆點 列舉所有的可能

擴充套件域沒寫過= =但看起來更簡單的樣子 有機會要寫下

種類並查集的一些理解

之前暑假集訓的時候學了一下並查集,但是那個時候完全搞不懂種類並查集 帶權並查集 的路徑壓縮以及兩個節點關係的合併。現在有重新學習了一下,算是對種類並查集有了一些粗淺的理解了吧。關於路徑壓縮 int find int x 其實之前我就不是很懂,為什麼要設乙個temp儲存father x 的值,不應該像...

並查集理解

作用 連通分量的查詢與合併 理解 1.將連通分量看成乙個集合,該集合包含了連通分量的所有點。連同方式無關緊要,只有屬於和不屬於與這個集合的區別。2.每個集合都可看成一棵樹,這個集合的標誌 這棵樹的標誌 就是這棵樹的根。3.如果把節點x的父親節點儲存在pre x 中,那麼再從pre x 找它的父親節點...

並查集理解

學了這麼久的資料結構了,還是有好些演算法並沒弄清楚,搞得有些筆試題都是沒有思路,今天就講講並查集。感覺這東西吧,就是分圈子,乙個人自成乙個圈子,若分屬於兩個不同圈子的人在某時刻成了好朋友,那這兩個圈子就合併成了乙個圈子,最終在題目中形成多個圈子進行分析。判斷兩個人是不是乙個圈子要不停的找朋友驗證,這...