#团,构造#洛谷 3524 [POI2011]IMP-Party
作者:互联网
题目
有一个 \(3n\) 个点的无向图,保证有一个大小为 \(2n\) 的团,输出一个大小为 \(n\) 的团
分析
每次选择两个不相连的点删掉,那么剩下的 \(n\) 个点一定是团,
因为每次至少有一个不在大小为 \(2n\) 的团中的点被删除,所以剩下的点一定在团中。
但是只是最多删除 \(n\) 次,所以输出完 \(n\) 个点后及时退出。
代码
#include <cstdio>
#include <cctype>
using namespace std;
const int N=3011; int n,ans;
bool kick[N],a[N][N];
int iut(){
int ans=0; char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=ans*10+c-48,c=getchar();
return ans;
}
int main(){
n=iut();
for (int T=iut();T;--T){
int x=iut(),y=iut();
a[x][y]=a[y][x]=1;
}
for (int i=1;i<=n;++i)
if (!kick[i]){
for (int j=i+1;j<=n;++j)
if (!kick[j]&&!a[i][j]){
kick[i]=kick[j]=1;
break;
}
}
for (int i=1;i<=n;++i)
if (!kick[i]){
printf("%d ",i);
if (++ans==n/3) break;
}
return 0;
}
标签:洛谷,个点,int,团中,POI2011,IMP,ans,iut,getchar 来源: https://www.cnblogs.com/Spare-No-Effort/p/16146649.html