BZOJ2530 [Poi2011]Party

每次把两个之间没有边的点删掉,2/3的团不会把这两个点都包含,所以删最多1/3n次后,就只剩下了2/3团的子集,团的子集还是团,随便输出就好了

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define MAXN 3010
#define MAXM 1010
#define INF 1000000000
#define MOD 1000000007
#define eps 1e-8
#define ll long long
bool mp[MAXN][MAXN],d[MAXN];
int n,m;
int main(){
	int i,j,x,y;
	scanf("%d%d",&n,&m);
	for(i=1;i<=m;i++){
		scanf("%d%d",&x,&y);
		mp[x][y]=mp[y][x]=1;
	}
	for(i=1;i<=n;i++){
		if(!d[i]){
			for(j=i+1;j<=n;j++){
				if(!d[j]&&!mp[i][j]){
					d[i]=d[j]=1;
					break;
				}
			}
		}
	}
	int tot=0;
	for(i=1;i<=n;i++){
		if(!d[i]){
			tot++;
			printf("%d ",i);
			if(tot==n/3){
				break;
			}
		}
	}
	printf("\n");
	return 0;
}

/*

*/


你可能感兴趣的:(BZOJ,构造)