英语四六级系列(二)
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
昨天,小明期待已久的英语四六级出成绩了,不幸的是,小明没有及格(::>_<::>
可是,小明数学不太好,你能帮一下他吗? 假设他有n名好友,好友编号为0~n-1。
输入
多组输入,每组第一行是两个整数n,m(2
接下来m行,每行两个整数a,b(0
代表好友a和好友b在同一个分数段上。
输出
输出一行,输出人数最多的分数段有多少人。
示例输入
4 2
1 2
2 3
6 3
0 1
2 3
2 4
示例输出
3
3
提示
来源
xj
示例程序
- #include “stdio.h”
- int bin[100002],a[10001],j;
- /*find3(x)
- {
- int r = x;
- while (bin[r] != r) //循环结束,则找到根节点
- r = bin[r];
- int i = x;
- while (i!=r) //本循环修改查找路径中所有节点
- {
- j = bin[i];
- bin[i] = r;
- i = j;
- }
- return r;
- }*/
- int find3(int x)
- {
- int r=x;
- while(bin[r] !=r)
- r=bin[r];
- return r;
- }
- void merge(int x,int y)
- {
- int fx,fy;
- fx = find3(x);
- fy = find3(y);
- if(fx != fy)
- {
- bin[fx] = fy;
- }
- }
- int main()
- {
- int n,m,i,x,h,y;
- while(scanf(“%d%d”,&n,&m)!=EOF)
- {
- sizeof(a));
- int c = 0;
- for(i=0;i
- bin[i] = i;
- for(h=m;h>0;h–)
- {
- “%d %d”,&x,&y);
- merge(x,y);
- }
- for(i=0;i
- {
- a[find3(i)]++;
- if(a[find3(i)]>c)
- {
- c = a[find3(i)];
- }
- }
- /*for(count=0, i=0;i
- if(bin[i] == i)
- count ++;
- printf(“Case %d: %dn”,z,count);
- z++;*/
- “%dn”,c);
- }
- return 0;
- }
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net