【蓝桥杯/DFS】分考场 (Java)

分考场

题目描述

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

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

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

输入描述

输入格式:

第一行,一个整数 nnn (1≤n≤1001 \leq n \leq 1001≤n≤100),表示参加考试的人数。

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

以下 mmm 行每行的格式为:两个整数 a,ba,ba,b,用空格分开 ( 1≤a,b≤n1 \leq a,b \leq n1≤a,b≤n )表示第 aaa 个人与第 bbb 个人认识。

输出描述

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

输入输出样例

示例

输入

txt 复制代码
5
8
1 2
1 3
1 4
2 3
2 4
2 5
3 4
4 5

 
 
 
  
  copy
 
 
 

输出

txt 复制代码
4

 
 
 
  
  copy
 
 
 

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M
java 复制代码
import java.util.Scanner;

public class Main{
    static int relationship[][];
    static int map[][];//room,person
    static int n,m;
    static int minroom=110;
    static void dfs(int person,int room){
        if(room>=minroom){
            return;
        }
        if(person==n){
            minroom=room;
            return;
        }
        int i=1;
        for (;i<=room;++i){
            int k=0;
            while(map[i][k]!=0&&relationship[person+1][map[i][k]]==0){
                ++k;
            }
            if(map[i][k]==0){
                map[i][k]=person+1;
                dfs(person+1,room);
                map[i][k]=0;
            }
        }
        map[i][0]=person+1;
        dfs(person+1,room+1);
        map[i][0]=0;
    }
    public static void solve(){
        Scanner scan = new Scanner(System.in);
        
        n=scan.nextInt();
        m=scan.nextInt();
        minroom=110;
        relationship=new int[n+1][n+1];
        map=new int[n+1][n+1];
        for(int i=0;i<m;++i){
            int a,b;
            a=scan.nextInt();
            b=scan.nextInt();
            relationship[a][b]=relationship[b][a]=1;
        }
        map[1][0]=1;
        dfs(1,1);
        System.out.println(minroom);
        scan.close();
    }
    public static void main(String[] args) {
        solve();
    }
}
相关推荐
Roye_ack1 分钟前
【leetcode hot 100】刷题记录与总结笔记(4/100)
笔记·算法·leetcode
源码技术栈2 分钟前
智慧工地微服务架构+Java+Spring Cloud +Uni-App +MySql开发,在微信公众号、小程序、H5、移动端
java·ai·saas·智慧工地·智慧工地项目·可视化大屏·智慧工地系统
老华带你飞6 分钟前
健身房预约|基于springboot 健身房预约小程序系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小程序
帅得不敢出门9 分钟前
MTK Android11 APP调用OTA升级
android·java·开发语言·framework
黑牛先生11 分钟前
【GDB】调试Jsoncpp源码
开发语言·c++·算法
李拾叁的摸鱼日常12 分钟前
ThreadLocal 内存泄漏深度解析:原因、避坑指南与业务最佳实践
java·面试
Kiri霧14 分钟前
Go Defer语句详解
java·服务器·golang
Q_Q51100828514 分钟前
基于Java的加油站销售积分管理系统的设计与实
java·开发语言
亿.617 分钟前
2025鹏城杯 Web
java·安全·web·ctf·鹏城杯
⑩-19 分钟前
Java设计模式-命令模式
java·设计模式·命令模式