时间限制(普通/Java):5000MS/15000MS     内存限制:65536KByte

描述

NKU ACM最近要举行足球赛,作为此次赛事的负责人,Lee要对报名人员进行分队。分队要遵循如下原则:

一个人不能加入多支队伍;
不认识的人不能分在同一队;
如果a和b认识,b和c认识,那么认为a和c也认识;
每支队伍上限8人,下限5人;
尽量使队伍满员。
由于参赛人数很多,Lee表示无能为力,所以请你帮助Lee编程解决比赛有多少队伍。

输入

第一行输入两个整数,n和m,n(1<=n<=300000)代表报名人数,m(1<=m<=500000)代表关系数。接下来m行每行两个整数a(1<=a<=n)和b(1<=b<=n)表示a和b认识。

输出

输出一行,包含一个整数,表示队伍数量。

样例输入

11 10
1 2
2 3
2 6
3 4
4 5
5 6
7 9
9 11
11 8
8 10

样例输出

2

思路:一看到“如果a和b认识,b和c认识,那么认为a和c也认识”这句话,马上想到并查集或者floyd算法。考虑到n非常大,直接拿并查集维护关系。

   然后看到有几只队伍,那么就看每个小团队有多少人了,具体的可以拿stl里面的map。搞一下ma[fid(i)]++; 代表这个小团队里面的人多一个。

之后就是细节了“每支队伍上限8人,下限5人;尽量满员”,这句话如果考虑清楚,就不会wa了,具体看代码。

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<stack>
#include<vector>
#include<map>
#define LL long long
using namespace std;
int pre[],n;
int fid(int x){return pre[x] == x ? x : pre[x] = fid(pre[x]) ;}
void join(int x,int y){fid(x)!=fid(y)?pre[fid(x)]=fid(y):;}
void init(){for(int i = ;i <= n ; i++)pre[i] = i;}
map<int,int>ma;
int main()
{
int m;
scanf("%d %d",&n,&m);
init();
while(m--){
int x,y;
scanf("%d %d",&x,&y);
join(x,y);
}
int ans = ;
for(int i = ; i <= n ; i++) ma[fid(i)]++;//每个小团体的人数存在map中
map<int,int>::iterator it = ma.begin();
for(;it != ma.end();it++){
int t = it->second;
for(int i = ; i >= ; i--){
if(t >= i){
ans += t/i; t %= i;
}
}//尽量满员
}
printf("%d\n",ans);
}

最新文章

  1. Sql Server系列:流程控制语句
  2. 【原】iOS动态性(五)一种可复用且解耦的用户统计实现(运行时Runtime)
  3. DAY6 处理http头,格式化输出
  4. C#基础:值类型、引用类型与ref关键字
  5. scala 宏
  6. 转帖: 使用脚本删除程序(免除在[控制面板]-&gt;[添加或删除程序]中的手工操作)
  7. Enforcing the correct protocol for partially SSL secured SharePoint sites
  8. sql 语句累积
  9. C语言每日一题之No.6
  10. 开涛spring3(7.5) - 对JDBC的支持 之 7.5 集成Spring JDBC及最佳实践
  11. JavaScript实现段落文本高亮
  12. python selenium 鼠标悬停
  13. JobTracker,TaskTracker简述
  14. L​i​n​u​x​下​配​置​T​o​m​c​a​t
  15. django - 总结 - cnblog
  16. centos7安装配置jdk
  17. js的eval代码快速解密
  18. python修炼第一天
  19. Django的model form组件
  20. 一、Composer

热门文章

  1. kong API gateway
  2. react-navigation,StackNavigator,TabNavigator 导航使用
  3. mysql 累加求和
  4. ABAP-语法检查
  5. 创建pod步骤
  6. setitimer函数
  7. Haskell语言学习笔记(90)Default
  8. 趣味编程:静夜思(Swift版)
  9. js字符串和控制语句
  10. 关于xml中自动提示功能的设置