最大团算法以后补充啊!
这个可以用DFS过的。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=110;
int map[maxn][maxn],color[maxn],ans[maxn];
int n,m,maxsum,len;
void dfs(int u){
int i;
if(u>n){
if(len>maxsum){
maxsum=len;
for(i=1;i<=n;i++)
ans[i]=color[i];
}
return;
}
for(i=1;i<=n;i++)
if(map[u][i]&&color[i])
break;
if(i==n+1){
len++;
color[u]=1;
dfs(u+1);
len--;
color[u]=0;
}
dfs(u+1);
}
int main(){
int t,i,j,u,v;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++){
scanf("%d%d",&u,&v);
map[u][v]=map[v][u]=1;
}
memset(color,0,sizeof(color));
maxsum=0;
dfs(1);
printf("%d\n",maxsum);
int c=0;
for(i=1;i<=n;i++){
if(ans[i])
if(c)
printf(" %d",i);
else
printf("%d",i),c=1;
puts("");
}
}
return 0;
}