有 10000000 個小朋友,他們之中有 n 對好朋友,且朋友關係具 有傳遞性:若 a 與 b 是朋友, b 與 c 是朋友,那麼我們也認為 a 與 c 是朋友。 在給出這 n 對朋友關係後,要求我們找出乙個最大(人數最多)的集合,該集 合中任意兩人之間都是朋友或者該集合中只有乙個人,輸出該最大人數。 如前例所示,我們利用並查集相關操作已經可以求得有幾個這樣符合條件的 集合,但是計算集合中的元素個數我們仍沒有涉及。我們如果能夠成功求得每個 集合的元素個數,我們只需要選擇包含元素最多的集合,並輸出該集合中的元素 個數即可。 為了計算每個集合的元素個數,我們不妨在表示每個集合的樹的根結點記錄 該集合所包含的元素個數,在合併時累加被合併兩個集合包含的元素個數。最後, 找出所有集合中所包含元素最多的集合即是所求。
#include
#define _crt_secure_no_warnings
using namespace std;
#define n 10000001
int tree[n]
;int
findroot
(int x)
}int sum[n]
;int
main()
while
(n--)}
int ans =1;
for(
int i =
1; i <= n; i++
)printf
("%d\n"
, ans);}
return0;
}
王道機試練習 求素數
題目描述 給定乙個數 n,要求判斷其是否為素數 0,1,負數都是非素數 輸入 測試資料有多組,每組輸入乙個數 n。輸出 對於每組輸入 若是素數則輸出 yes,否則輸入 no。樣例輸入 13樣例輸出 yes怎樣確定乙個數是素數?我們可以用所有大於 1 小於其本身的整數去試著 整除該數,若在該區間內存在...
王道機試練習 分解素因數
求正整數 n n 1 的質因數的個數。相同的質因數需要重複計算。如 120 22235 共有 5 個質因數。輸入 可能有多組測試資料,每組測試資料的輸入是乙個正整數 n,1該 按照如下步驟對輸入的整數分解素因數 1.利用素數篩法篩得 0 到 100000 區間內所有素數。2.輸入 n。3.依次測試步...
王道機試練習 求最短距離Dijkstra演算法
在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的 t shirt。但是 每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累 的 所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?輸入 輸入包括多組資料。每組資料第一行是兩個整數 n m n 100,m 10000 ...