题解
2023-08-23 10:07:24
发布于:广东
38阅读
0回复
0点赞
法姐缺席了?那我就冒昧的发个题解吧
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e2+10;
int ch[MAXN][MAXN],a[MAXN],x[MAXN], tot = 0, s = 0, n, m;
void dfs(int k) {
if(k > n) {
if(s <= tot) {
return;
}
tot = s;
for(int j = 1; j <= n; j++) {
a[j] = x[j];
}
return;
}
int check = 1;
for(int t = 1; t < k; t++) {
if(ch[t][k] && x[t]) {
check = 0;
break;
}
}
if(check) {
x[k] = 1;
s++;
dfs(k + 1);
s--;
x[k] = 0;
}
dfs(k + 1);
return;
}
int main() {
cin>>n>>m;
for(int i = 1; i <= m; i++) {
int u,v;
cin>>u>>v;
ch[u][v] = 1;
ch[v][u] = 1;
}
dfs(1);
cout<<tot<<'\n';
for(int i = 1; i <= n; i++) {
cout<<a[i]<<' ';
}
return 0;
}
这里空空如也
有帮助,赞一个