常規模板對比入口:並查集常規模板
下面是精華模板:
#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相遇了...