資料結構 並查集 自學筆記

2021-10-08 05:59:05 字數 581 閱讀 6282

為了能夠動態維護若干個不重疊的集合,並支援合併於查詢,我們使用乙個樹形結構儲存每個集合,樹上的每個節點都是乙個元素,根節點是集合的代表元素

並查集的操作包括兩個:

get:查詢元素屬於哪乙個集合(返回根節點)。

merge:將兩個元素(或集合)合併。

路徑壓縮 按秩合併

**路徑壓縮:**可以在每次get操作時,將訪問過的每個節點全部指向根節點。

**按秩合併:**在合併時將「秩」較小的根節點作為「秩」較大的根節點的子節點(秩可以定義為集合大小或樹的深度)。

int fa[size]

;//定義乙個fa陣列儲存父節點

void

init()

//初始化fa陣列

intget

(int x)

void

merge

(int x,

int y)

「擴充套件域」 與 「邊帶權」 的並查集:

例題:

資料結構 並查集

並查集,顧名思義,合併 查詢 集合 並查集是一種樹型的資料結構,用於處理一些不相交集合 disjoint sets 的合併及查詢問題。常常在使用中以森林來表示。對於概念等等的這裡不再贅述,直接講解應用。應用1 判斷圖中有多少聯通分量 或者圖是否聯通 聯通分量 1 hdu 1213 應用2 判斷圖是否...

資料結構 並查集

time limit 1000ms memory limit 65536k 某城市有n個人,現在給定關於n個人的m條資訊,m條資訊是兩個人在同乙個小區,根據所給資訊,判斷這個城市最多可能有多少個小區。n個人編號為1 n。多組輸入。每組第一行有兩個整數n,m 2 n 50000,0 m n 2 接下來...

資料結構 並查集

一 基本概念 並查集是一種樹型的資料結構,用於處理一些不相交集合 disjoint sets 的合併及查詢問題。常常在使用中以森林來表示。集就是讓每個元素構成乙個單元素的集合,也就是按一定順序將屬於同一組的元素所在的集合合併。在一些有n個元素的集合應用問題中,通常是在開始時讓每個元素構成乙個單元素的...