【2802】SDUTOJ (并查集模板水题2)
2014-08-15 21:11
267 查看
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
可是,小明数学不太好,你能帮一下他吗? 假设他有n名好友,好友编号为0~n-1。
接下来m行,每行两个整数a,b(0 <= a,b <= n-1)。
代表好友a和好友b在同一个分数段上。
#include <stdio.h>
英语四六级系列(二)
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int fa[10010];
int num[10010];
int fin(int a)
{
if(a!=fa[a])
fa[a]=fin(fa[a]);
return fa[a];
}
void un(int x,int y)
{
int a=fin(x);
int b=fin(y);
if(a!=b)
fa[b]=a;
}
int main()
{
int n,m,i,a,b;
while(~scanf("%d %d",&n,&m))
{
memset(num,0,sizeof(num));
int ma=0;
for(i=0; i<n; i++)
fa[i]=i;
for(i=0; i<m; i++)
{
scanf("%d %d",&a,&b);
un(a,b);
}
for(i=0; i<n; i++)
{
num[fin(i)]++;
}
for(i=0; i<n; i++)
{
if(num[i]>ma)
{
ma=num[i];
}
}
printf("%d\n",ma);
}
return 0;
}
相关文章推荐
- 【2802】SDUTOJ (并查集模板水题2)
- SDUTOJ 2802--英语系列二【并查集】
- SDUTOJ [2801] 并查集模板
- SDUTOJ [2801] 并查集模板
- hdu 1232 畅通工程(并查集模板题)
- 并查集简单模板
- 并查集 模板
- hdu1231 并查集模板题
- C++-并查集模板
- 并查集模板
- hdu1231 并查集模板题
- hdu 1232 变成生成树至少还要加几条边 (并查集模板题)
- [模板] - 略优化的并查集
- 1073 家族(并查集模板)
- poj3177Redundant Paths【构造双连通分量:并查集缩点 模板】
- Link-Cut Tree(LCT) 模板总结 & 水题/模板题 动态树
- HDU 1232 畅通工程(模板——并查集)
- 并查集模板题 HDU1272 小希的迷宫
- HDU 1213 How Many Tables(模板——并查集)
- HDU - 1272 小希的迷宫(看似并查集的水题)