並查集和帶權並查集(演算法總結)

2021-08-22 03:22:47 字數 571 閱讀 2421

並查集

what:並查集是一種用來管理元素分組情況的資料結構。

作用:1.查詢元素a,b是否屬於同一組。

2.合併元素a,b所在的組。

結構:樹形,不是二叉樹。

注意:防止樹形結構發生退化,將所有元素找到她的根節點,讓其父結點,直接為他的根節點,方便查詢。

並查集模板:

1.查詢:

1》遞迴模式(複雜度高,不建議使用。

int find(int v)

}

2》迴圈模式

int find(int x)

int i = x, j;

while (fa[i] != r)

return r;

}

2.合併

void unite(int x, int y)

帶權並查集:唯一的不同之處在於他含有乙個v陣列儲存權值。根據不同情況,推出某狀態下權值的關係(可記錄多種,以情況而定)。記錄。

帶權並查集大神詳解:

並查集和帶權並查集

並查集是乙個很高效演算法,理解起來也很簡單,寫起來更簡單。fat i i 找到乙個點的祖先 int findfat int x 二中的方法肯定不好,因為如果資料比較極端,那麼並查集就退化成乙個鏈了 如果加入了路徑壓縮,並查集這個演算法就更高效了。int findfat int x 遞迴寫法 int ...

並查集和帶權並查集

簡介 並查集是一種以陣列為儲存結構的樹形資料結構,當其中一些元素發生從屬關係時,我們把可以關聯的元素看做乙個個的集合 即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編號...