题解,目前最快
2024-05-28 20:44:53
发布于:上海
10阅读
0回复
0点赞
既然存储仇人,那么就用set集合。
#include<iostream>
#include<set>
using namespace std;
set<int> s[105];
bool vis[105],choice[105];
int n,t,a,b,m=0,chosen[105];
void dfs(int step=1,int len=0){
if(step>n){
if(len>=m){
m=len;
for(int i=1;i<=n;i++){
if(vis[i])choice[i]=1;
else choice[i]=0;
}
}
return;
}
bool f=1;
if(len){
for(int i=1;i<=len;i++){
if(s[chosen[i]].find(step)!=s[chosen[i]].end()){
f=0;
break;
}
}
}
dfs(step+1,len);
if(f){
vis[step]=1;
chosen[len+1]=step;
dfs(step+1,len+1);
vis[step]=0;
}
}
int main(){
cin>>n>>t;
for(int i=0;i<t;i++){
cin>>a>>b;
s[a].insert(b);
s[b].insert(a);
}
dfs();
cout<<m<<endl;
for(int i=1;i<=n;i++)cout<<choice[i]<<" ";
return 0;
}
这里空空如也
有帮助,赞一个