利用並查集解決節點互聯問題

2022-03-05 08:30:25 字數 510 閱讀 7815

節點連通問題一般來說有兩個思路:

1、化作圖論問題,是否連通變為深度/廣度優先搜尋,連通個數為連通分量

2、構造並查集解決

兩者**複雜度差不多但並查集時間複雜度更低

注意:只適用於無向圖的情況

class unionfind 

}void put(int origin, int target)

while (id[target] != target)

id[origin] = target;

}//遞迴獲取並比對父節點

boolean connected(int origin, int target)

while (id[target] != target)

return origin == target;

}//獲取父節點數

public int getconnectionnum()

return r;

}}

並查集解決朋友圈問題

首先我們來看一道題筆試題,關於朋友圈的問題 解決這個問題,我們可以用並查集來解決。並查集是一種資料結構,用於處理不相交集合中的合併以及查詢問題,將n個元素分成一組不相交的集合,開始時我們把每乙個元素當成乙個集合,然後按規律將集合合併。舉例說明,首先定義乙個只有10個元素的陣列,並將每個元素的值設定為...

並查集解決朋友圈問題

題目 加入已知n個人和m對好友關係 存於陣列r 如果兩個人是直接或間接的好友 好友的好友的好友 則認為他們屬於同乙個朋友圈。請寫程式求出這n個人裡一共有多少個朋友圈。例如 n 5,m 3,r 表示有5個人,1和2是好友,2和3是好友,4和5是好友,則1,2,3屬於同乙個朋友圈,4和5屬於另乙個朋友圈...

使用並查集解決的相關問題

關於並查集的說明,見如下部落格 使用並查集處理集合的合併和查詢問題 本題的解題思路參考部落格 使用dfs和並查集方法解決島問題 主要思路 橫縱座標表示的是城市,因為城市是一樣的,所以只需要遍歷對角線上半區或者下半區即可,如果某個 i,j 位置是1,可以說明如下兩個情況 第一,i這座城市和j這座城市可...