AcWing 4. 分考场
原题链接
简单
作者:
YMYS
,
2025-03-26 22:05:16
·河南
,
所有人可见
,
阅读 3
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 110;
int n,m;
int f[N][N];
int g[N][N];
int sum = N;
void dfs(int per,int room)
{
if(room>=sum) return;
if(per>n){
sum = min(sum, room);
return ;
}
for(int i=1;i<=room;i++){
int k = 1;
while(!f[per][g[i][k]] && g[i][k]) k++;
if(g[i][k] == 0){
g[i][k] = per;
dfs(per+1, room);
g[i][k] = 0;
}else{
continue;
}
}
g[room+1][1] = per;
dfs(per+1, room+1);
g[room+1][1] = 0;
}
signed main()
{
cin>>n>>m;
for(int i=0;i<m;i++){
int a,b;
cin>>a>>b;
f[a][b] = f[b][a] = 1;
}
dfs(1,1);
cout<<sum<<endl;
return 0;
}