注意到随机一组贪心解得到的团的大小不小于$\frac{N}{3}$的概率是很大的,所以一直随机下去,直到找到一组解即可,随机次数是常数级别的,所以复杂度为$O(n^2)$。
#include#include #define N 3010int n,m,i,j,k,a[N],del[N],fin[N];bool g[N][N];inline void swap(int&a,int&b){int c=a;a=b;b=c;}inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}int main(){ read(n),read(m); while(m--)read(i),read(j),g[i-1][j-1]=g[j-1][i-1]=1; for(i=0;i =n/3){ for(i=j=0;i