並查集 解決連通性問題

2021-10-25 19:22:04 字數 2964 閱讀 6228

給的輸入形式不同,但都是利用並查集,並查集的實現是不變的。

1) 323. 無向圖中連通分量的數目

給定編號從 0 到 n-1 的 n 個節點和乙個無向邊列表(每條邊都是一對節點),請編寫乙個函式來計算無向圖中連通分量的數目。

2)547. 省份數量(連通分量的數目)

有 n 個城市,其中一些彼此相連,另一些沒有相連。如果城市 a 與城市 b 直接相連,且城市 b 與城市 c 直接相連,那麼城市 a 與城市 c 間接相連。

省份 是一組直接或間接相連的城市,組內不含其他沒有相連的城市。

給你乙個 n x n 的矩陣 isconnected ,其中 isconnected[i][j] = 1 表示第 i 個城市和第 j 個城市直接相連,而 isconnected[i][j] = 0 表示二者不直接相連。

返回矩陣中 省份 的數量。

# 遍歷matrix的上半部分,union所有連通的node(分量)

for i in

range

(provinces)

:for j in

range

(i +

1, provinces)

:if isconnected[i]

[j]==1:

union(i, j)

circles =

sum(parent[i]

== i for i in

range

(provinces)

)return circles

reference:

連通性問題

1 伺服器可以ping通客戶端,說明伺服器和客戶端之間的鏈路是通的。客戶端不能ping通伺服器,很可能是防火牆的原因,包括伺服器本身自帶的防火牆和伺服器與交換機之間的cisco asa 5505防火牆。防火牆的訪問規則中清除禁止ping入之類的規則,或者清除拒絕接收icmp包的規則。2 ping不通...

動態連通性問題

首先定義演算法的api 方法作用 uf int n 初始化觸點及其他資料 int find int p 返回p所在連通分量的識別符號 int union int p,int q 在p和q之間新增一條線 int count 返回連通分量的數量 boolean connected int p,int q...

SOJ 連通性問題

description 關係r具有對稱性和傳遞性。數對p q表示prq,p和q是0或自然數,p不等於q。要求寫乙個程式將數對序列進行過濾,如果乙個數對可以通過前面數對的傳遞性得到,則將其濾去。例如 輸入 輸出 連通性 3 4 3 4 4 9 4 9 8 0 8 0 2 3 2 3 5 6 5 6 2...