資料結構基礎 並查集(UnionFind)

2021-09-01 12:40:36 字數 1624 閱讀 2409

union(p, q) -----------------並操作,將元素p,q併入同乙個組內

find(p)------------------------查操作,返回元素所在組號,通常是乙個private的輔助函式

isconnected(p, q)---------查操作,查詢元素p,q是否在乙個組內(同乙個組內的元素是相互連線的)

基本資料表示:

quickunion並查集經典的「路徑壓縮」的優化

//基於rank的優化,即維護乙個rank陣列,記錄每個根節點的層數,在合併元素時,將層數小的樹合併到個層數大的樹上,避免合併後整棵樹深度太深

//同時做了乙個經典的優化,在find過程中新增了路徑壓縮優化

public class quickunionufiv implements unionfind else }}

quickunion並查集經典的「路徑壓縮」的優化,遞迴實現

package ufs;

import unionfind.unionfind;

//基於rank的優化,即維護乙個rank陣列,記錄每個根節點的層數,在合併元素時,將層數小的樹合併到個層數大的樹上,避免合併後整棵樹深度太深

//"壓縮路徑"優化的遞迴實現,可以在find(i)時,直接將i的parent設為根節點,效能上稍微遜與非遞迴的「壓縮路徑」

//因為非遞迴的「壓縮路徑」在多次對i進行find(i)後,也可達到將i的parent設為根節點的效果,避免了遞迴的開銷。

資料結構 並查集

並查集,顧名思義,合併 查詢 集合 並查集是一種樹型的資料結構,用於處理一些不相交集合 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個元素的集合應用問題中,通常是在開始時讓每個元素構成乙個單元素的...