高階資料結構 並查集

2021-10-17 15:30:54 字數 779 閱讀 4954

優化路徑壓縮 o(nlogn)

按秩合併 o(nlogn)

o(α(n)) ≈ o(1), 當n ≤ 161987 , α(n) ≤ 5維護

形成環兩個點在連邊之前在乙個集合中

二維 → 一維

(x,y) → x*n+y (x,y 都從0開始)

acwing1252.搭配購買

01揹包 錢為容量 每個連通塊為乙個物品

總體積 總價值 → 繫結到根節點

p[x] == x

程式自動

題目分析

約束條件順序無所謂

先考慮所有「相等」約束(不可能有矛盾)

再考慮不等條件

xi ≠ xj 矛盾:xi 與 xj 已在同一集合中

思路離散化 109 → 2*106

將所有相等條件合併 → merge

依次判斷每個不等條件 → 並查集查詢 xi yi

並查集(只向圖) ∈ 傳遞揹包 o(n3) 有/無向圖都可

組隊練習:ccpc2018吉林(vj重現)

+b題除錯

+全部翻譯

高階資料結構之並查集

基本步驟 初始化 不斷合併的過程中查詢 統計集合。樹狀圖 初始化 intfind set int x 查詢根節點 void union set int x,int y 合併集合 intmain for int i 1 i n i 有幾種不同的根 if i s i ans cout ans endl ...

資料結構 並查集

並查集,顧名思義,合併 查詢 集合 並查集是一種樹型的資料結構,用於處理一些不相交集合 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 接下來...