|
- #include<iostream>
- using namespace std;
- int n,m,x,y,ans=-1,cnt,c[101],best[101],a[101][101],b[101],p[101];
- void dfs(int k)
- {
- if(k>n)
- {
- if(cnt>ans)
- {
- ans=cnt;
- for(int i=1; i<=cnt; i++)best[i]=c[i];
- }
- return;
- }
- if(!b[k])
- {
- b[k]++,c[++cnt]=k;
- for(int i=1; i<=n; i++)b[i]+=a[k][i];
- dfs(k+1);
- cnt--,b[k]--;
- for(int i=1; i<=n; i++)b[i]-=a[k][i];
- }
- dfs(k+1);
- }
- int main()
- {
- cin>>n>>m;
- for(int i=1; i<=m; i++)
- cin>>x>>y,a[x][y]=a[y][x]=1;
- dfs(1);
- cout<<ans<<endl;
- for(int i=1; i<=ans; i++)p[best[i]]++;
- for(int i=1;i<=n;i++)cout<<p[i]<<' ';
- return 0;
- }
复制代码 |
|