分考场

news/2024/7/20 20:03:43 标签: 深度优先, 算法, c++

[蓝桥杯 2017 国 C] 分考场(假题:最小色数)

题目描述

n n n 个人参加某项特殊考试。

为了公平,要求任何两个认识的人不能分在同一个考场。

求最少需要分几个考场才能满足条件。

输入格式

第一行,一个整数 n ( 1 < n < 100 ) n(1<n<100) n(1<n<100),表示参加考试的人数。

第二行,一个整数 m m m,表示接下来有 m m m 行数据。

以下 m m m 行每行的格式为:两个整数 a a a b b b,用空格分开 ( 1 ≤ a , b ≤ n ) (1 \le a,b \le n) (1a,bn) 表示第 a a a 个人与第 b b b 个人认识(编号从 1 1 1 开始)。

输出格式

一行一个整数,表示最少分几个考场。

样例 #1

样例输入 #1

5
8
1 2
1 3
1 4
2 3
2 4
2 5
3 4
4 5

样例输出 #1

4

样例 #2

样例输入 #2

5
10
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5

样例输出 #2

5

提示

时限 1 秒, 256M。蓝桥杯 2017 年第八届国赛

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=200;
int st[N][N];
int mp[N][N];//第i个考场的第i位同学
int n,m;
int minkey;
void dfs(int k,int res)//第k个同学,存在res个考场
{
  if(res>=minkey)return;//目前的考场数大于了最优考场数,不再继续
  if(k>n)//目前遍历的是n+1位同学,没有,已经遍历完了
  {
    minkey=min(minkey,res);//更新考场数
    return ;
  }
  for(int i=1;i<=res;i++)//依次遍历每个考场,看有没有认识他的
  {
    int u=1;
      while(mp[i][u]&&!st[k][mp[i][u]])//如果第i个考场的第u名同学存在且不认识,继续往后遍历
        u++;
        //注意这个u如果每个人都不认识的话,这个u代表的是本考场人数加一
        //那么这个考场就没有第u个人,
        if(!mp[i][u])//没有第u个,让第k个同学成为第u个
        {
          mp[i][u]=k;
          dfs(k+1,res);
          mp[i][u]=0;//回溯
        }
      
  }
  //自己新加一个考场
  mp[res+1][1]=k;
  dfs(k+1,res+1);
  mp[res+1][1]=0;
}
int main()
{
  cin>>n>>m;
  minkey=n;
  while(m--)
  {
    int a,b;
    cin>>a>>b;
    st[a][b]=1;//表示ab认识
    st[b][a]=1;
  }
  dfs(1,0);//第1个同学有0个考场
  cout<<minkey;
  return 0;
}

http://www.niftyadmin.cn/n/209980.html

相关文章

内存五区的概念,内存池技术的诞生。

首先提出一道经典的面试题来引出今天的主角&#xff1a; 进程的虚拟空间分布是什么样的&#xff0c;全局变量放在哪里&#xff1f; 在数据初始化之后&#xff0c;全局变量放在.data段 在数据未初始化时&#xff0c;全局变量放在.bss段 内存五区 进程虚拟内存主要分为五个部分…

美团测开岗 【一面总结】

目录 1.实习经历 2.你知道有哪些测试的分类 3.测试一个水杯 4.手撕代码 5.MySql代码 6.说说继承 7.用final修饰的类可以被继承吗 8.继承与实现接口的区别 9.String、StringBuffer、StringBuilder的区别 10.HashMap插入一个元素的底层实现 1.实习经历 开始问了一些上…

[图神经网络]空间关系感知关系网络(SGRN)-代码解析

&#xff01;&#xff01;&#xff01;这篇不涉及实现&#xff0c;仅从官方代码了解一下输出处理的思路&#xff0c;有机会的话会做实现&#xff0c;照例放出官方代码地址和之前写的论文解读&#xff1a; SGRN网络github项目地址https://github.com/simblah/SGRN_torch[图神经…

01 | 论文「外审」到底看什么?

前言 外审审稿的底层逻辑 文章目录前言一、专家&#xff08;教授&#xff09;评审的逻辑1. 人数2. 评价标准3. 费用二、学位论文与期刊论文的要求1. 学位论文2. 期刊论文三、专家&#xff08;教授&#xff09;评审的重点1. 核心点2. 内容1&#xff09;题目2&#xff09;摘要3&a…

蓝牙耳机品牌推荐:2023年降噪蓝牙耳机性价比推荐

每天上下班的地铁公交里&#xff0c;总会有很多嘈杂的声音发出&#xff0c;所以现在越来越多人选择佩戴一款降噪耳机来缓解消除一天的疲劳&#xff0c;在属于自己的空间里听听音乐。下面我推荐几款不错质量好的降噪耳机给大家&#xff0c;一起看看吧。 一、NANK南卡A2 价格&a…

【EHub_tx1_tx2_E100】 WLR-720多线激光 雷达在Ubuntu18.04 + ROS_ Melodic 环境评测

简介&#xff1a;介绍 WLR-720多线激光雷达 在EHub_tx1_tx2_E100载板&#xff0c;TX1核心模块环境&#xff08;Ubuntu18.04&#xff09;下测试ROS驱动&#xff0c;打开使用RVIZ 查看点云数据&#xff0c;本文的前提条件是你的TX1里已经安装了ROS版本&#xff1a;Melodic。关于测…

第一章:part1监督学习:回归

线性回归&#xff08;linear regression model&#xff09; 线性回归模型 回归&#xff1a;可以预测数字作为输出 是一种特殊的监督学习模型 例&#xff1a;通过已知的房价来拟合曲线 可以求得英尺的价格 区别回归与分类&#xff1a;分类的输出结果一般为离散的&#xff0c;并…

rsync远程同步实现快速、安全、高效的异地备份

目录 一.rsync介绍 1.rsync是什么&#xff1f; 2.rsync同步方式 3.rsync的特性 4.rsync的应用场景 5.rsync与cp、scp对比 6.rsync同步源 二.rsync命令 1.常用选项 2.实例&#xff1a;本地复制对比 3.配置源的两种表示方法 三.实验&#xff1a;配置rsync下行同步 四…