题目描述
n个人参加某项特殊考试。
为了公平,要求任何两个认识的人不能分在同一个考场。
求是少需要分几个考场才能满足条件。
输入
第一行,一个整数n(1<n<100),表示参加考试的人数。
第二行,一个整数m,表示接下来有m行数据
以下m行每行的格式为:两个整数a,b,用空格分开 (1<=a,b<=n) 表示第a个人与第b个人认识。
输出
一行一个整数,表示最少分几个考场。
样例输入
5
8
1 2
1 3
1 4
2 3
2 4
2 5
3 4
4 5
样例输出
4
思路:一开始当成了一个图论来做,但是有一半超时了。后来改的dfs+回溯+剪枝。我们就从第一个人开始枚举,如果有之前的考场可以让他坐的话,就把它安排进去。如果没有的话,就再新开创一个考场让他坐。剪枝:如果当前安排的考场数大于当前最小值的话,就不再往下搜索,因为结果肯定不是它。
代码如下:

#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;const int maxx=1e2+10;
int mp[maxx][maxx];
vector<int> col[maxx];
int n,m;inline void dfs(int id,int num,int &ans)
{if(num>=ans) return ;if(id==n+1) {ans=num;return ;}for(int i=1;i<=num;i++){int flag=1;for(int j=0;j<col[i].size();j++){if(mp[id][col[i][j]]){flag=0;break;}}if(flag){col[i].push_back(id);dfs(id+1,num,ans);col[i].pop_back();}}col[num+1].push_back(id);dfs(id+1,num+1,ans);col[num+1].pop_back();
}
int main()
{scanf("%d%d",&n,&m);memset(mp,0,sizeof(mp));for(int i=1;i<=n;i++) col[i].clear();int x,y;for(int i=1;i<=m;i++){scanf("%d%d",&x,&y);mp[x][y]=mp[y][x]=1;}int ans=inf;dfs(1,0,ans);cout<<ans<<endl;return 0;
}

努力加油a啊,(o)/~

[蓝桥杯][2017年第八届真题]分考场(dfs+剪枝)相关推荐

  1. 题目 1885: [蓝桥杯][2017年第八届真题]分巧克力+二分

    题目: 题目描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需要从这 N 块巧克 ...

  2. [蓝桥杯][2017年第八届真题]包子凑数(解题报告)

    问题 1886: [蓝桥杯][2017年第八届真题]包子凑数 时间限制: 1Sec 内存限制: 128MB 提交: 406 解决: 118 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家 ...

  3. 题目 1886: 蓝桥杯2017年第八届真题-包子凑数

    时间限制: 1Sec 内存限制: 128MB 提交: 2378 解决: 789 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼 ...

  4. 题目 1878: 蓝桥杯2017年第八届真题-青蛙跳杯子

    题目 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙. ...

  5. [蓝桥杯][2017年第八届真题]小计算器(模拟)

    题目描述 模拟程序型计算器,依次输入指令,可能包含的指令有 数字:'NUM X',X为一个只包含大写字母和数字的字符串,表示一个当前进制的数 运算指令:'ADD','SUB','MUL','DIV', ...

  6. [蓝桥杯][2017年第八届真题]小数第n位(数学)

    题目描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数. 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式. 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始 ...

  7. [蓝桥杯][2017年第八届真题]对局匹配

    题目描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起.如果两人分差 ...

  8. c语言存储对局信息,[蓝桥杯][2017年第八届真题]对局匹配 (C语言代码)

    解题思路:   这道题要求找出最大同时在线但不能匹配对局的用户数,我用的思路是动态规划,因为每两个相邻为K的用户都可以匹配,如果直接暴力搜索会出现牵一动百的情况,下面我来说一下我的思路: 数据存储方式 ...

  9. [蓝桥杯][2017年第八届真题]合根植物

    题目描述 w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列).每个格子里种了一株合根植物. 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成 ...

最新文章

  1. android 背景图太大,android – 背景图片需要太长时间才能画(Canvas)Jerky Sprites ……?...
  2. js怎么把按钮往下移_js 实现单行数据上下移动
  3. Android涂鸦技术及刮刮乐示例分析
  4. SpringMVC Hello World 实例
  5. HDFS的namenode和datanode
  6. java fx choicebox_JavaFX:具有图像和文本的ChoiceBox
  7. 5-python学习——条件语句
  8. [设计模式] ------ 策略模式
  9. Qt之进程间通信(共享内存)
  10. 腾讯没有梦想,阿里没有盟友?
  11. C# 概念 委托和事件
  12. 全国省市自治区经纬度坐标
  13. linux下c 开发 腾讯视频播放器,调用腾讯视频播放器API代码
  14. ★平衡法则在生活中的应用
  15. 【Web】HTML 账号注册页面
  16. 数据模型建设-维度建模详解
  17. 中文网页的外链对Google谷歌SEO有用吗
  18. 客快物流大数据项目(九十九):Clickhouse中update/delete的使用
  19. 樱桃牌-高逼格键盘敲代码贼爽!包邮送你!
  20. .HTA 简明教程: HTML APPLICATION(HTML应用程序)

热门文章

  1. c++的构造函数初始化列表
  2. 一个列中多行求和_Excel 用选项求和及用快捷键快速求和,同时对多单元格求和...
  3. Android重点笔记,安卓listview 懒加载的实现笔记
  4. Hopsan -- 液压、电力等行业的仿真开源软件
  5. OPenGL实例化绘制、普通绘制说明
  6. matlab 设计 18db,基于混沌理论的微弱MPSK信号解调方案设计
  7. watch监听vuex内部数据变化
  8. 读书(附电子书)|小狗钱钱之白色的拉布拉多
  9. 新媒体视频导演 - 美学基础 todo
  10. 通过QQ或者QQ帮助别人学习Lync之一