VJ 並查練習

2021-06-23 05:58:07 字數 834 閱讀 7008

題目描述:

description

昨天,小明期待已久的英語四六級出成績了,不幸的是,小明沒有及格(::>_<::)。通過和自己的好友聊天,小明知道了很多好友的成績。於是,無聊的小明自己劃分了一些分數段,並統計自己的好友在每個分數段的人數(有些分數段只有乙個人),他想知道人數最多的分數段有多少人。

可是,小明數學不太好,你能幫一下他嗎? 假設他有n名好友,好友編號為0~n-1。

input

多組輸入,每組第一行是兩個整數n,m(2 <= n <= 10000, 0 <= m <=1000)。

接下來m行,每行兩個整數a,b(0 <= a,b <= n-1)。

代表好友a和好友b在同乙個分數段上。

output

輸出一行,輸出人數最多的分數段有多少人。

sample input

4 2

1 22 3

6 30 1

2 32 4

sample output

3

3

#include

#include

int set[10005];

int num[10005];

int max;

int jihe(int x)

int k,y=x;

while(y!=r)

return r;

}void merge(int x,int y)

int main()

printf("%d\n",max);

}return 0;

}

並查集練習

題目描述 假如已知有n個人和m對好友關係 存於數字r 如果兩個人是直接或間接的好友 好友的好友的好友 則認為他們屬於同乙個朋友圈,請寫程式求出這n個人裡一共有多少個朋友圈。假如 n 5 m 3 r 表示有5個人,1和2是好友,2和3是好友,4和5是好友,則1 2 3屬於乙個朋友圈,4 5屬於另乙個朋...

並查集練習

集合的合併與維護和食物鏈那道題一樣。不過多了個裁判。注意到n 500,所以可以列舉裁判,然後判斷是否出現了矛盾。忽略裁判 如果有矛盾,則這個人不是裁判。唯一有點難度的是輸出第幾行判斷出的裁判。原先以為是最後出現裁判的那一行。後來發現應當時列舉其他人時候首次出現矛盾的最大值。仔細想想 這樣這道題就解決...

Friend解題報告 並查集練習

這題並不是很難,僅作為並查集的乙個入門級練習,所要掌握的知識也確實很基礎。實際上,這道題就是問在一定的合併操作後,問最大的集合有多少人。但是同時也要記住,相同的集合不能合併!include using namespace std struct node node point 1000001 int ...