您的位置:首页 > 其它

[构造] BZOJ 2530 [Poi2011]Party

2016-05-20 16:39 363 查看
考虑删点

每次找一对没有连边的点对将其删掉 至少删掉了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

,vst
;

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: