資料結構 並查集

2021-10-09 14:11:57 字數 593 閱讀 5803

並查集,合併和查詢

其中進行路徑壓縮原理可以參考:

用途:1、乙個相互連線,檢視主要有幾個不相交集合

2、判斷圖中是否有環,原理是如果兩個之前已經在同乙個集合裡面的兩個節點再次要合併,也就是說原來就連通的兩點間要再次連線,說明有環。

father = 

n = len(m)

for i in range(n):

#遞迴獲得最高端父節點,並把該路徑上所有父節點都指向根節點

def get(x):

if father[x] == x:

return x

#路徑壓縮,直接父節點全連到根節點上,降低以後查詢的複雜度到o(1)

father[x] = get(father[x])

return father[x]

#把兩個節點的根節點連到一起,也就把兩個集合合到一起

def union(x,y):

xx = get(x)

yy = get(y)

#這裡可以用於用途2判斷有環

if xx!=yy:

father[xx] = father[yy]

資料結構 並查集

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