bzoj3623

题解:

刚看到题目,还以为是2-sat

可是似乎不对啊。。。

然后就只能爆搜了

看了网上的题解,woc还真是报搜

然后就ac了

当然爆搜还要随机化

代码:

#include<bits/stdc++.h>
using namespace std;
int x,y,n,b[55],ans,a[55][55],del[55];
void getans()
{
    memset(del,0,sizeof(del));
    int t=0;
    for (int i=1;i<=n;i++)
     if (!del[i])
      {
        t++;
        for (int j=i+1;j<=n;j++)
         if (!a[b[i]][b[j]])del[j]=1;
      }
    ans=max(t,ans);
}
int main()
{
    scanf("%d",&n);
    while (~scanf("%d%d",&x,&y))a[x][y]=a[y][x]=1;
    for (int i=1;i<=n;i++)b[i]=i;
    for (int i=1;i<=10000;i++)
     {
        for (int j=1;j<=n;j++)swap(b[j],b[rand()%j+1]);
        getans();
     }
    printf("%d",ans);
    return 0;
}
原文地址:https://www.cnblogs.com/xuanyiming/p/8206694.html