比赛 |
20120722 |
评测结果 |
AWWTTTWTTT |
题目名称 |
MAX-2-SAT |
最终得分 |
10 |
用户昵称 |
Truth.Cirno |
运行时间 |
6.007 s |
代码语言 |
C++ |
内存使用 |
0.29 MiB |
提交时间 |
2012-07-22 11:41:33 |
显示代码纯文本
#include <cstdio>
using namespace std;
int n,m,maxlen=0,a[200][2];
bool rec[31];
void cal(void)
{
int i,c=0;
bool x,y;
for (i=0;i<m;i++)
{
if (a[i][0]>0)
x=rec[a[i][0]];
else
x=!rec[-a[i][0]];
if (a[i][1]>0)
y=rec[a[i][1]];
else
y=!rec[-a[i][1]];
if (x||y)
c++;
}
if (maxlen<c)
maxlen=c;
}
void make(int val,int deep)
{
rec[deep]=val;
if (deep==n)
{
cal();
}
else
{
make(0,deep+1);
make(1,deep+1);
}
}
int main(void)
{
freopen("max2sat.in","r",stdin);
freopen("max2sat.out","w",stdout);
int times,i,T;
scanf("%d",&T);
for (times=0;times<T;times++)
{
scanf("%d%d",&n,&m);
for (i=0;i<m;i++)
scanf("%d%d",&a[i][0],&a[i][1]);
make(0,1);
make(1,1);
}
printf("%d\n",maxlen);
return(0);
}