首页 > 其他 > 详细

IMP-Party题解

时间:2019-11-11 19:28:27      阅读:88      评论:0      收藏:0      [点我收藏+]

IMP-Party题解

先说一下团的定义:
团是G的一个完全子图,任意两点之间都有边相连。
所以对于任意无边相连的两点,一定不属于相同的团。
因为一定存在一个大小为\(\frac{2n}{3}\)的团,我们采取一换一的方案,正好会剩下\(\frac{n}{3}\)的团。

#include<bits/stdc++.h>
using namespace std;
const int N=3006;
int n,m,t1,t2,num=0;
bool e[N][N],v[N];
inline int read(){
   int T=0,F=1; char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-') F=-1; ch=getchar();}
   while(ch>='0'&&ch<='9') T=(T<<3)+(T<<1)+(ch-48),ch=getchar();
   return F*T;
}
int main(){
   n=read(),m=read();
   for(int i=1;i<=m;++i) t1=read(),t2=read(),e[t1][t2]=e[t2][t1]=1;
   for(int i=1;i<=n;++i){
       if(v[i]) continue;
       for(int j=i+1;j<=n;++j) if(!v[j]&&!e[i][j]&&!e[j][i]){v[i]=1,v[j]=1; break;} 
   }
   for(int i=1;i<=n;++i) if(!v[i]&&num<n/3) ++num,printf("%d ",i);
   return 0;
}

IMP-Party题解

原文:https://www.cnblogs.com/ljk123-de-bo-ke/p/11837270.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!