並查集及優化 C

2021-07-28 13:34:58 字數 1053 閱讀 4779

#include 

#include

#include

#include

using namespace std;/*/

/查詢快,但是合併差

class unionfind1

int find(int p)

bool isconnected(int p,int

q) void union(int p,int

q)} ;

*//*

//基於2的基礎上的優化(主要是優化)

//根據集合的元素的多少來決定指向

class unionfind3

~unionfind3()

int find(int p)

bool isconnected(int p,int

q)

void union(int p,int

q)

}} ;*/

/*//在2上基於rank的優化

//rank[i]表示根節點為i的樹的高度

class unionfind4

~unionfind4()

int find(int p)

bool isconnected(int p,int

q) void union(int p,int

q) else

}} ;*/

//路徑壓縮 時間複雜度近乎是o(1)

class unionfind5

~unionfind5()

int find(int p)

//return p;

if(p!=parent[p])//路徑壓縮2所有的節點都指向根節點

parent[p]=find(parent[p]);

return parent[p];

}bool isconnected(int p,int

q)

void union(int p,int

q) else

}} ;

並查集及種類並查集

b站 並查集int find root int x return x int hebing int x,int y return0 檢驗 include using namespace std const int n 100 const int m 200 int parent n deep n i...

並查集的實現及優化

並查集是一種用於在森林中判斷子圖數量及點的歸屬的資料結構,由於其特殊的路徑壓縮操作,使得這一過程可以異常地快。並查集主要由乙個pre陣列以及兩個函式組成 find函式和join函式。pre陣列表示每一節點的前驅,最終已完成的並查集,每乙個子圖的所有點只有乙個前驅 這也是其高效的原因 而初始化的並查集...

並查集的優化及應用

2018 05 01 15 13 08 並查集是乙個時空複雜度非常優越的資料結構,並且通過優化後其複雜度為。並查集的優化主要有兩個方面 路徑壓縮 按rank合併 public class unionfindset public int find int i public boolean union ...