並查集(濃縮的精華模版 )

2021-09-12 18:48:48 字數 708 閱讀 6011

常規模板對比入口:並查集常規模板

下面是精華模板:

#include

const

int maxn =

1e6+10;

using namespace std;

int pre[maxn]

;int height[maxn]

;int sum;

/* 遞迴寫法精華版find:

省掉初始化自己的上級是自己,直接用0表示是自己

若用其他數字表示上級是自己,

比如-1,最多用memset(pre,-1,sizeof(-1)),這樣初始化更快

return pre[x] = find(pre[x])這句**路徑壓縮包含其中(遞迴回溯實現)

如果資料很大,出現爆棧的情況 ,那麼就使用非遞迴寫法

*/intfind

(int x)

/* merge 一般不用寫優化,如果要優化的話參考 下面第二個merge

*/void

merge

(int x,

int y)}/*

//merge優化

void merge(int x,int y)

sum--;//看具體問題

}} */

intmain()

cout

}

模版 並查集

什麼是並查集 並查集是一種樹型的資料結構,用於處理一些不相交集合 disjoint sets 的合併及查詢問題。為何使用inline inline是c 關鍵字,在函式宣告或定義中,函式返回型別前加上關鍵字inline,即可以把函式指定為內聯函式。這樣可以解決一些頻繁呼叫的函式大量消耗棧空間 棧記憶體...

並查集 模版

並查集 並查集,在一些有n個元素的集合應用問題中,我們通常是在開始時讓每個元素構成乙個單元素的集合,然後按一定順序將屬於同一組的元素所在的集合合併,其間要反覆查詢乙個元素在哪個集合中。這一類問題近幾年來反覆出現在資訊學的國際國內賽題中,其特點是看似並不複雜,但資料量極大,若用正常的資料結構來描述的話...

演算法模版之並查集

簡介 並查集實質是一種樹形的資料結構,一般用於處理一些不相交集合的合併及查詢問題。在具體問題解決上,比如找公共祖先節點 檢查圖的連通性等等,用通俗點的語言來描述的話,例如乙個幫派 有點社會呀 a的大哥是b,b的大哥是c,c的大哥是d,此時a b c d互相是不認識的,假如發生了幫派爭鬥,b和d相遇了...