CSU 1045 並查集(帶權並查集)

2021-08-06 07:10:09 字數 603 閱讀 5156

大一的學一下,大二以上還不會並查集的統統去面壁。

多組資料,每組第一行兩個正整數n,m,表示有1~n這n個編號,m個關係。

接下來m行,每行兩個數i, j, 1 <= i, j <= n,表示i和j是一組的。

每個編號自己和自己是一組的。

1 < n < 1000000 ,1 < m < 100000 。

每組資料輸出一行,乙個數,表示組員最多的組的組員個數。

10 5

1 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者之間的具體的數量關係或者是統...