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 小雷有個特殊的癖好,平時喜歡收藏各種稀奇古怪的東西,譬如。還有。也包括。小雷是乙個喜歡分享的童鞋,這次小雷又給大家帶來一套神奇...