java實現並查集

2021-07-10 06:25:06 字數 881 閱讀 3079

並查集是根據這篇博文學習的,寫得很不錯:

下面是實現

public class unionfindset 

count = n;

} /**

* 合併p,q所在集合

* @param p

* @param q

*/public void union(int p, int q)

if (size[rootp] < size[rootq]) else

count--;

}// union

/*** 查詢p所在集合,並返回根節點

* @param p

* @return

*/public int find(int p)

return p; }

/*** 判斷p,q是否在同一集合中

* @param p

* @param q

* @return

*/public boolean connected(int p, int q)

/*** 返回當前集合數,初始為節點數

* @return

*/public int getcount()

public int getset()

public static void main(string args)

system.out.println("count : " + ufs.getcount());

}// main

}// unionfindset

下面是執行結果:

並查集 並查集

本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...

C 實現並查集

將n個不同的元素分成一組不相交的集合。開始時,每個元素就是乙個集合,然後按規律將兩個集合進行合併。假如已知有n個人和m對好友關係 存於陣列r 如果兩個人是直接的或間接的好友關係 好友的好友的好友.則認為他們屬於同一好友圈,請求出這n個人中有幾個好友圈。例如 n 5,m 3,r 表示有5個人,1和2是...

並查集實現(c )

1.何為並查集?並查集是一種樹型的資料結構,用於處理一些不相交集合的合併及查詢問題,簡單的說就是對集合操作的一種資料結構。2.做什麼用 考慮這樣乙個問題 若某個家族人員過於龐大,要判斷兩個是否是親戚,確實還很不容易,給出某個親戚關係圖,求任意給出的兩個人是否具有親戚關係。規定 x和y是親戚,y和z是...