並查集 學習詳解

2021-06-04 16:05:15 字數 376 閱讀 2605

#include#includeusing namespace std;

int m,n;

int i,j,maxnum;

int father[30005],num[30005];

void makeset(int n)

{ for(i=0;i

主要的思想是:當合併集合的時候,如果待合併的兩個元素不在同乙個集合,則執行maxnum-1操作,

如果在同乙個集合,則當執行findset操作的時候,由於在同乙個集合,具有相同的father節點,此時有:x==y直接return,而不執行maxnum--

意思是:當在同乙個集合的時候,集合中元素的個數是不變的,當不再同乙個集合的時候,集合中的元素個數增加,當時集合的個數減少。

並查集 學習詳解

出處 勇幸 thinking 昨天和今天學習了並查集和trie樹,並練習了三道入門題目,理解更為深刻,覺得有必要總結一下,這其中的內容定義之類的是取自網路,操作的說明解釋及程式的注釋部分為個人理解。並查集學習 一種簡單的用途廣泛的集合.並查集是若干個不相交集合,能夠實現較快的合併和判斷元素所在集合的...

並查集詳解

其實並查集顧名思義就是有 合併集合 和 查詢集合 兩種操作的關於資料結構的一種演算法。並查集演算法不支援分割乙個集合。用集合中的某個元素來代表這個集合,該元素稱為集合的代表元。乙個集合內的所有元素組織成以代表元為根的樹形結構。對於每乙個元素 parent x 指向x在樹形結構上的父親節點。如果x是根...

詳解並查集

並查集主要用來求解不相交集合的問題,主要針對於合併和查詢兩種演算法。並查集的實現主要包含了三個部分 並查集的初始化是對單個資料建立了乙個單獨的集合,每個集合應該包含以下兩個資料 由以上兩個資料,一般的並查集的結構一般有兩種表示形式 結構體構造如下 define max 50 struct node ...