英语四六级系列(二)

英语四六级系列(二)

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

昨天,小明期待已久的英语四六级出成绩了,不幸的是,小明没有及格(::>_<::)。通过和自己的好友聊天,小明知道了很多好友的成绩。于是,无聊的小明自己划分了一些分数段,并统计自己的好友在每个分数段的人数(有些分数段只有一个人),他想知道人数最多的分数段有多少人。
可是,小明数学不太好,你能帮一下他吗? 假设他有n名好友,好友编号为0~n-1。

输入

多组输入,每组第一行是两个整数n,m(2 <= n <= 10000, 0 <= m <=1000)。
接下来m行,每行两个整数a,b(0 <= a,b <= n-1)。
代表好友a和好友b在同一个分数段上。

输出

输出一行,输出人数最多的分数段有多少人。

示例输入

4 2
1 2
2 3
6 3
0 1
2 3
2 4

示例输出

3
3

提示

 

来源

xj

示例程序

  1. #include "stdio.h"  
  2. int bin[100002],a[10001],j;  
  3. /*find3(x) 
  4. { 
  5.       int r = x; 
  6.       while (bin[r] != r) //循环结束,则找到根节点 
  7.           r = bin[r]; 
  8.       int i = x; 
  9.       while (i!=r) //本循环修改查找路径中所有节点 
  10.       { 
  11.           j = bin[i]; 
  12.          bin[i] = r; 
  13.           i = j; 
  14.       } 
  15.       return r; 
  16. }*/  
  17.   
  18. int find3(int x)  
  19. {  
  20.     int r=x;  
  21.     while(bin[r] !=r)  
  22.         r=bin[r];  
  23.     return r;  
  24. }  
  25. void merge(int x,int y)  
  26. {  
  27.     int fx,fy;  
  28.     fx = find3(x);  
  29.     fy = find3(y);  
  30.     if(fx != fy)  
  31.         {  
  32.             bin[fx] = fy;  
  33.         }  
  34. }  
  35. int main()  
  36. {  
  37.     int n,m,i,x,h,y;  
  38.     while(scanf("%d%d",&n,&m)!=EOF)  
  39.     {  
  40.         memset(a,0,sizeof(a));  
  41.         int c = 0;  
  42.         for(i=0;i<n;i++)  
  43.             bin[i] = i;  
  44.         for(h=m;h>0;h--)  
  45.         {  
  46.             scanf("%d %d",&x,&y);  
  47.             merge(x,y);  
  48.         }  
  49.         for(i=0;i<n;i++)  
  50.         {  
  51.             a[find3(i)]++;  
  52.             if(a[find3(i)]>c)  
  53.             {  
  54.                 c = a[find3(i)];  
  55.             }  
  56.         }  
  57.   
  58.   
  59.         /*for(count=0, i=0;i<n;i++) 
  60.             if(bin[i] == i) 
  61.                 count ++; 
  62.         printf("Case %d: %d\n",z,count); 
  63.         z++;*/  
  64.         printf("%d\n",c);  
  65.     }  
  66.        return 0;  
  67. }  
  68.   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶孤心丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值