→题目链接←
bzoj玄妙的评测机
究竟是什么道理...交一发TLE后怎么也找不到原因...然后删掉了一个不起眼的东西后A了,我感觉不太对啊...就又交了一边最开始的代码
?????
总之A掉了就好
虽然这个题解有很多人写了,但是我还是要来蹭访问量
既然你来了那咱们俩就是有缘
我还是说一说做法吧
每次把没有连边的两点删掉
可以看出至多删掉2N/3个点
最后输出没被删掉其中的1/3
代码:
#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
int n,m;
bool a[3030][3030];
bool f[3030];
int main(){
scanf("%d%d",&n,&m);
for(int i=0; i<m; i++){
int x,y;
scanf("%d%d",&x,&y);
a[x][y]=true;
a[y][x]=true;
}
for(int i=1; i<=n; i++){
if(!f[i]){
for(int j=i+1; j<=n; j++){
if(!f[j] && !a[i][j]){
f[i]=f[j]=true;
break;
}
}
}
}
int x=0;
for(int i=1; x<n/3; i++){
if(!f[i]){
x++;
printf("%d ",i);
}
}
printf("\n");
return 0;
}