题目大意:给定一个图,其中至少有一个大小为2/3的团,让你输出一个大小为1/3的团
每次找到两个之间没有边的点,他们之中至少有一个不在大团中,把这些删干净了至少还剩下N/3个的点,输出即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 3010
using namespace std;
int a[N][N];
bool vis[N];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int i,j,x,y;
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
a[x][y]=true;
a[y][x]=true;
}
for(i=1;i<=n;i++)
if(!vis[i])
{
for(j=1;j<=n;j++)
if(j!=i&&!vis[j]&&!a[i][j])
{
vis[i]=true;
vis[j]=true;
break;
}
}
int cnt=0;
for(i=1;i<=n;i++)
if(!vis[i])
{
cnt++;
printf("%d ",i);
if(cnt==n/3) break;
}
}