大一的學一下,大二以上還不會並查集的統統去面壁。
多組資料,每組第一行兩個正整數n,m,表示有1~n這n個編號,m個關係。
接下來m行,每行兩個數i, j, 1 <= i, j <= n,表示i和j是一組的。
每個編號自己和自己是一組的。
1 < n < 1000000 ,1 < m < 100000 。
每組資料輸出一行,乙個數,表示組員最多的組的組員個數。
10 51 23 5
2 64 7
9 6
4
中南大學2023年暑期集訓隊選拔賽
#include
#include
#include
using
namespace
std;
int f[1000005];
int n,m;
int a,b;
int father(int x)
void union_(int a,int b)
int main()
return
0;}
並查集,帶權並查集
題意 ignatius過生日,客人來到,他想知道他需要準備多少張桌子。然而一張桌子上面只能坐上相互熟悉的人,其中熟悉可定義成為a與b認識,b與c認識,我們就說a,b,c相互熟悉 例如a與b熟悉and b與c熟悉,d與e熟悉,此時至少需要兩張桌子。輸入 t表示樣例個數,n表示朋友個數,朋友從1到n編號...
並查集和帶權並查集
並查集是乙個很高效演算法,理解起來也很簡單,寫起來更簡單。fat i i 找到乙個點的祖先 int findfat int x 二中的方法肯定不好,因為如果資料比較極端,那麼並查集就退化成乙個鏈了 如果加入了路徑壓縮,並查集這個演算法就更高效了。int findfat int x 遞迴寫法 int ...
並查集與帶權並查集
1.找點的祖先 fa i i 並查集的快主要在於路徑壓縮。1 遞迴寫法 int find int x 2 非遞迴寫法 int find int x return r 2.合併 合併2者的集合。void merge int x,int y 3.帶權並查集 一般是存下一些2者之間的具體的數量關係或者是統...