小雷的冰茶几(並查集)

2021-08-04 18:26:44 字數 1344 閱讀 4283

time limit: 1000ms memory limit: 65536kb

submit statistic

problem description

小雷有個特殊的癖好,平時喜歡收藏各種稀奇古怪的東西,譬如。。。。,還有。。。。,也包括。。。。。小雷是乙個喜歡分享的童鞋,這次小雷又給大家帶來一套神奇的東西,那就是舉世無雙的冰茶几!

顧名思義,這些茶几被冰凍住了,最主要的是他們是易碎品,畢竟被凍住了。因此小雷要很小心翼翼的移動他們。一些茶几是凍在一起的,因此一套冰茶几分為好幾部分,並且如果茶几a與b凍在一起,b與c凍在一起,那麼a與c也就凍在了,即冰凍狀態有傳遞性,abc此時會看作乙個整體。

為了保證冰茶几的完整性,小雷每次只能移動一整塊冰茶几,也就是冰凍在一起的一部分。小雷想知道他需要搬幾次才能全部搬到實驗室,你能幫小雷快速計算出答案麼?

input

多組輸入,先輸入組數t(1 < = t < = 200)。

對於每組輸入,先輸入乙個整數n(1 < = n < = 100000),k(0 < = k < = 100000),茶几編號1~n。

之後k行,每行兩數x,y(1 < = x,y < = n),表示第x個茶几和第y個茶几冰凍在一起。

output

對於每組輸入,先輸出」case z: 」(不帶引號)表示組數,再輸出乙個整數,表示小雷需要搬動的次數。

example input

3 3 1

1 2

5 2

1 2

3 4

5 2

1 2

2 3

example output

case 1: 2

case 2: 3

case 3: 3

hint

author

2023年第五屆acm趣味程式設計迴圈賽(第一場) by leiq

並查集:

推薦部落格

很喜歡他舉的例子,生動形象~

正如其名,合併+查詢。

#include 

#include

#include

int pre[123456];

int root(int x)//尋找其父節點

return x;

}void merge(int a, int b)

int main()

int sum = 0;

for(int j=1;j<=n;j++)//遍歷找到父節點的個數,就是需要移動的次數

printf("case %d: %d\n", i, sum);

}return

0;}

並查集 小雷的冰茶几

小雷的冰茶几 time limit 1000 ms memory limit 65536 kib submit statistic problem description 小雷有個特殊的癖好,平時喜歡收藏各種稀奇古怪的東西,譬如。還有。也包括。小雷是乙個喜歡分享的童鞋,這次小雷又給大家帶來一套神奇的...

A 小雷的冰茶几(並查集)

description 小雷有個特殊的癖好,平時喜歡收藏各種稀奇古怪的東西,譬如。還有。也包括。小雷是乙個喜歡分享的童鞋,這次小雷又給大家帶來一套神奇的東西,那就是舉世無雙的冰茶几!顧名思義,這些茶几被冰凍住了,最主要的是他們是易碎品,畢竟被凍住了。因此小雷要很小心翼翼的移動他們。一些茶几是凍在一起...

小雷的冰茶几(簡單並查集)

time limit 1000 ms memory limit 65536 kib submit statistic discuss problem description 小雷有個特殊的癖好,平時喜歡收藏各種稀奇古怪的東西,譬如。還有。也包括。小雷是乙個喜歡分享的童鞋,這次小雷又給大家帶來一套神奇...