| 比赛 | 
    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);
}