考虑删点
每次找一对没有连边的点对将其删掉 至少删掉了1个不在团中的点
那么不超过1/3次操作后所有不在团中的点都会被删掉 此时最多删掉了2/3个
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=3005;
int n,m,cnt=0;
int a[N][N],vst[N];
int main()
{
freopen("t.in","r",stdin);
freopen("t.out","w",stdout);
int iu,iv;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
scanf("%d%d",&iu,&iv),a[iu][iv]=a[iv][iu]=1;
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n && !vst[i];j++)
if(!vst[j] && !a[i][j])
vst[i]=vst[j]=1;
for(int i=1;i<=n && cnt<n/3;i++)
if(!vst[i])
printf("%d%c",i,(++cnt)==n/3?'\n':' ');
return 0;
}