前言:並查集是用來解決 「朋友的朋友也是朋友」 類的問題,其實寫三個函式就能解決大部分題
//重點的三個函式(核心部分)
int fa[n];
void init()
int findfa(int x)
void union(int x, int y)
//找連通分支數(或者說是不同的圈子數)
int cnt = 0;
for(int i = 1; i <= people; i++)
if(findfa(i) == i) cnt++;
//判斷任意兩個元素是否屬於同乙個圈子
if(findfa(x)== findfa(y)) printf("y\n");
else printf("n\n");
//查詢某個點所在連通分支中點的個數
cout << num[findfa(a)] << endl;
並查集板子
void init int getf int x return father x int getf int x return father x void unite int x,int y else hdu 1213 how many tables include using namespace s...
hdu1213 並查集板子
並查集是一種支援合併與查詢的資料結構,在森林中進行操作,加上路徑壓縮,合併和查詢的時間複雜度幾乎都是常數。並查集最基礎的作用就是建立不同的點之間的所謂的 關係 並且查詢兩者是否有關係。並查集的乙個特點是向量型關係傳遞性,比如a b b c,則有a c,是不是特別像向量之間的傳遞?在很多時候並查集的應...
我的多項式全家桶板子
博主最近心血來潮,貼貼全家桶。本多項式全家桶包含了 多項式乘法,多項式求逆,多項式求ln,多項式求exp,多項式除法,多項式取模,多項式多點求值,以及乙個為了多點求值用的分治ntt。由於時代變了,博主的多點求值使用了常數較小的版本。include define i inline define fi ...