優化路徑壓縮 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 接下來...