並查集學習筆記

2021-06-28 06:26:02 字數 511 閱讀 8241

並查集是一種用來管理資料分組狀況的資料結構,可以進行合併操作,但無法進行分割。

並查集的結構

並查集也是用樹形結構來實現的,但不是二叉樹。每個資料,元素對應乙個節點,每個組對應一棵樹。

並查集的實現

並查集有幾個基本操作初始化、查詢樹的根、合併x,y所屬集合、判斷x,y是否屬於同一集合。

查詢是查詢樹的根節點,兩個數的根有共同的根節點,說明兩個數屬於同一組。

合併就是將乙個樹的根向另乙個樹的根連邊,兩棵樹就變成一棵,兩個組就合併成乙個組了。

為了使並查集更加高效,採用一種路徑壓縮的方法,每次查詢之後,若這個節點能找到根節點,那麼就將這個節點直接連線到根節點。 

具體實現**:

int par[max_n];//父親結點 

int rank[max_n];//樹的高度

//初始化n個元素

void init(int n){

for(int i=0;i

並查集 學習筆記

並查集是由一組互不相交的集合組成的乙個集合結構,並在此集合上定義了運算union和find。即並查集中的元素本身是集合,他們是某個集合的子集,並查集是由這些集合組成的集合結構。並查集上有兩個最基本的運算,find和union。函式find搜尋給定元素i所在的子集合,並返回該自己喝 union運算將兩...

學習筆記 並查集

這是乙個可以實現合併與查詢 元素間關係判定 用來維護多集合 功能多樣化 的超牛批的可以動態維護的樹形結構。這個演算法只要是實現集合元素關係的型別都可以用到,又是線性時間複雜度,而且最關鍵的是它是個高階資料結構,翻譯過來就是這個可以動態維護,所以我覺得這個用途比單純的演算法要好,實際應用比較大,而且這...

並查集學習筆記

也算是磕磕絆絆,斷斷續續的學歷一段時間並查集了吧,也是時候改寫乙個blog總結一下啦。先說一下普通並查集吧。普通並查集就是單純的把某些可以連起來的點用一條有向邊連起來,表示他們屬於 一類 例如hdu1213,這就是乙個並查集的裸題,直接把輸入的點合併,之後統計有幾個點的祖先是自己就行。ac incl...