Description
Input
Output
Sample Input
Sample Output
8
HINT
题目分析
f[i][j]代表第j棵树在i高度时能获得的最多的柿子数目
这里使用了滚动数组 但其实并不用 是我看错数据范围了QAQ
#include <cstdio>
#include <cstring>
#include <cmath>
#include <queue>
#include <algorithm>
using namespace std;
int n,m;
bool f[3010][3010],v[3010];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
f[x][y]=f[y][x]=1;
}
for(int i=1;i<=n;i++)
if(!v[i])
for(int j=i+1;j<=n;j++)
if(!v[j]&&!f[i][j])
{
v[i]=1,v[j]=1;
break;
}
int cnt=0;
for(int i=1;i<=n;i++)
{
if(!v[i]) printf("%d ",i),cnt++;
if(cnt==n/3) break;
}
return 0;
}