並查集和帶權並查集

2021-07-16 19:19:10 字數 676 閱讀 8105

並查集是乙個很高效演算法,理解起來也很簡單,寫起來更簡單。

①fat[i] = i;

②找到乙個點的祖先

int findfat(int x)

③二中的方法肯定不好,因為如果資料比較極端,那麼並查集就退化成乙個鏈了

如果加入了路徑壓縮,並查集這個演算法就更高效了。

int findfat(int x)//遞迴寫法

int findfat(int x)//非遞迴寫法 更好,因為不會re

int y=x;

while(y!=root)

return r;

}

④合併

void join(int x,int y)

}

帶權並查集

帶權值的並查集只不過是在並查集中加入了乙個value[ ]陣列

value[ ]可以記錄很多種東西,不一定是類似距離這種東西,也可以是相對於根節點的狀態

加入了權值,函式應該有一些改變

①找到乙個點的祖先

int findfat(int x)

差不多就這樣了……

並查集和帶權並查集

簡介 並查集是一種以陣列為儲存結構的樹形資料結構,當其中一些元素發生從屬關係時,我們把可以關聯的元素看做乙個個的集合 即a連線b,c也連線b,那麼a,b,c可以看做乙個集合 基本操作 初始化 首先定義乙個father陣列,初始化就是令陣列中每個人的父親都是他自己,即f i 暫時表示i的父親。當出現這...

並查集,帶權並查集

題意 ignatius過生日,客人來到,他想知道他需要準備多少張桌子。然而一張桌子上面只能坐上相互熟悉的人,其中熟悉可定義成為a與b認識,b與c認識,我們就說a,b,c相互熟悉 例如a與b熟悉and b與c熟悉,d與e熟悉,此時至少需要兩張桌子。輸入 t表示樣例個數,n表示朋友個數,朋友從1到n編號...

並查集與帶權並查集

1.找點的祖先 fa i i 並查集的快主要在於路徑壓縮。1 遞迴寫法 int find int x 2 非遞迴寫法 int find int x return r 2.合併 合併2者的集合。void merge int x,int y 3.帶權並查集 一般是存下一些2者之間的具體的數量關係或者是統...