並查集入門(普通並查集 帶刪除並查集 關係並查集)

2021-09-04 10:18:54 字數 929 閱讀 5640

什麼是並查集?通俗易懂的並查集詳解

【普通並查集】

基礎並查集(例題+題解)

【how many tables】

problem description

lh boy無聊的時候很喜歡數螞蟻,而且,還給每乙隻小螞蟻編號,通過他長期的觀察和記錄,發現編號為i的螞蟻會和編號為j的螞蟻在一起。

現在問題來了,他現在只有他的那本記錄本,然而,他想要知道,他所觀察的螞蟻中,有多少堆蟻群。沒有記錄的編號則作為獨自乙個一堆。

input

第一行輸入乙個整數t,表示有t(1<=t<=25)組測試案例。每一組測試案例,先輸入兩個整數n和m,分別表示螞蟻的總數(編號分別為1~n)和記錄的條數(1<=n,m<=1000)。緊接著有m行,每一行輸入兩個數字,a b,表示編號a和編號b的螞蟻在同一堆裡面。在每組測試案例之間都會輸入一行空行。

output

對於每組測試案例,在一行中輸出答案。

跟之前相比區別在於find函式寫成遞迴的形式簡短了很多(笑)。

【**】

int pre[1005];

int find(int x)

void join(int x,int y)

int main()

void join(int x,int y)

void del(int x)

int main()

void join(int x,int y)

pre[fx]=fy;

r[fx]=(r[x]+r[y]+1)%2; //相鄰不同性別

}int main()

if(f) puts("suspicious bugs found!");

else puts("no suspicious bugs found!");

}return 0;

}

並查集,帶權並查集

題意 ignatius過生日,客人來到,他想知道他需要準備多少張桌子。然而一張桌子上面只能坐上相互熟悉的人,其中熟悉可定義成為a與b認識,b與c認識,我們就說a,b,c相互熟悉 例如a與b熟悉and b與c熟悉,d與e熟悉,此時至少需要兩張桌子。輸入 t表示樣例個數,n表示朋友個數,朋友從1到n編號...

並查集 帶權並查集 種類並查集 入門基礎題

include include include include include include include includetypedef long long ll using namespace std const int inf 0x3f3f3f3f const int maxn 2e5 10...

並查集 並查集

本文參考了 挑戰程式設計競賽 和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 ...