並查集(帶計數) 模板

2021-08-20 13:51:50 字數 509 閱讀 2907

題意:

在另乙個宇宙,乙個月有 n 天。多變的天氣條件使得人們很惱火,終於,天氣統計局產生了。它會對外發布 m 條資訊,格式如下: x y 表示第 x 天的天氣和第 y 天一樣。

但民眾並不滿足於此,他們想知道有多少天的天氣和第 x 天一樣。 現在,作為乙個聰明的程式設計師,你能幫他們解決這個問題嗎?

題解:

給並查集加上計數功能

#include

using

namespace

std;

intset[1000000], num[1000000];

int findset(int x)

void unionset(int x, int y)

}int main()

for (int i = 0; i < m; i++)

scanf("%d", &q);

while (q--)

return

0;}

並查集模板 帶權並查集

並查集由乙個整數型的陣列和兩個函式構成。陣列pre 記錄了每個點的前導點是什麼,函式find是查詢,join是合併。int pre 1005 intfind int x 查詢x的前乙個節點 最終r為根節點 路徑壓縮 把所有子節點的上乙個節點都改為根節點 int i x,j while i r ret...

並查集,帶權並查集

題意 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 ...