/*
题意:还是二进制异或,和poj3678类似
建边和poj3678一样
*/
#include<stdio.h>
#include<string.h>
#include<math.h>
#define N 2100
struct node
{
int v,next;
} bian[N*N];
int head[N],dfn[N],low[N],vis[N],stac[N],belong[N],yong,ans,index,top;
void init()
{
yong=index=ans=top=0;
memset(head,-1,sizeof(head));
memset(vis,0,sizeof(vis));
memset(dfn,0,sizeof(dfn));
}
void addedge(int u,int v)
{
bian[yong].v=v;
bian[yong].next=head[u];
head[u]=yong++;
}
int Min(int v,int vv)
{
return v>vv?vv:v;
}
void tarjan(int u)
{
dfn[u]=low[u]=++index;
stac[++top]=u;
vis[u]=1;
int i;
for(i=head[u]; i!=-1; i=bian[i].next)
{
int v=bian[i].v;
if(!dfn[v])
{
tarjan(v);
low[u]=Min(low[u],low[v]);
}
else if(vis[v])
low[u]=Min(low[u],dfn[v]);
}
if(dfn[u]==low[u])
{
++ans;
int t;
do
{
t=stac[top--];
belong[t]=ans;
vis[t]=0;
}
while(t!=u);
}
}
int ma[N][N];
int judge(int n)
{
int i,j;
for(i=0; i<n; i++)
{
if(ma[i][i])return 1;
for(j=0; j<n; j++)
if(ma[i][j]!=ma[j][i])return 1;
}
return 0;
}
int endd(int n)
{
int i;
for(i=0; i<2*n; i++)if(!dfn[i])tarjan(i);
for(i=0; i<n; i++)
if(belong[i]==belong[i+n])
return 1;
return 0;
}
int main()
{
int n,m,i,j,k;
while(scanf("%d",&n)!=EOF)
{
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d",&ma[i][j]);
if(judge(n))
{
printf("NO\n");
continue;
}
for(k=0; k<32; k++)
{
init();
for(i=0; i<n; i++)
for(j=i+1; j<n; j++)
{
if(i==j)continue;
m=ma[i][j]&(1<<k);
if(i%2==1&&j%2==1)
{
if(m)
{
addedge(i+n,j);
addedge(j+n,i);//0,0
}
else
{
addedge(i,j);
addedge(j+n,i+n);//1,0
addedge(i+n,j+n);
addedge(j,i);//0,1
addedge(i,j+n);
addedge(j,i+n);//1,1
}
}
else if(i%2==0&&j%2==0)
{
if(m)
{
addedge(i,j);
addedge(j+n,i+n);//1,0
addedge(i+n,j+n);
addedge(j,i);//0,1
addedge(i+n,j);
addedge(j+n,i);//0,0
}
else
{
addedge(i,j+n);
addedge(j,i+n);//1,1
}
}
else
{
if(m)
{
addedge(i+n,j);
addedge(j+n,i);//0,0
addedge(i,j+n);
addedge(j,i+n);//1,1
}
else
{
addedge(i,j);
addedge(j+n,i+n);//1,0
addedge(i+n,j+n);
addedge(j,i);//0,1
}
}
}
if(endd(n))break;
}
if(k==32)printf("YES\n");
else
printf("NO\n");
}
return 0;
}

hdu 4421 和poj3678类似二级制操作(2-sat问题)的更多相关文章

  1. 第26章 java进制操作

    java进制操作 1.二进制 二进制只有0和1,逢二进一 二进制多用在计算机中,来自计算机硬件的开关闭合 2.位运算 分别讲解: 2.1.按位与 & 两位全为1,结果才为1 0&0=0 ...

  2. 二级制包安装Tomcat 与 RPM包安装Tomcat

    1:下载二级制包 wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.47/bin/apache-tomcat-8.0.47.tar.g ...

  3. HDU 4421 Bit Magic(2-sat)

    HDU 4421 Bit Magic pid=4421" target="_blank" style="">题目链接 题意:就依据题目,给定b数 ...

  4. C语言学习笔记:15_c语言中的进制操作.c

    /* * 15_c语言中的进制操作.c * * Created on: 2015年7月5日 * Author: zhong */ #include <stdio.h> #include & ...

  5. HDU 4453:Looploop(Splay各种操作)

    http://acm.hdu.edu.cn/showproblem.php?pid=4453 题意:很多种操作:1.add x,将从光标起的 k2 个数全部加上 x:2.reverse,将从光标起的 ...

  6. HDU 4278 Faulty Odometer 8进制转10进制

    Faulty Odometer Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...

  7. HDU 4421 Bit Magic(奇葩式解法)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4421 题目大意: 给了你一段代码, 用一个数组的数 对其进行那段代码的处理,是可以得到一个矩阵 让你判 ...

  8. HDU 1335 Basically Speaking(进制转换)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1335 Problem Description The Really Neato Calculator ...

  9. HDU 1176 免费馅饼 (类似数字三角形的题,很经典,值得仔细理解的dp思维)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others)     ...

随机推荐

  1. linux高负载下mysql数据库彻底优化

    同时在线访问量继续增大 对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机 或者时不时的服务器卡一下 这个问题曾经困扰了我半个多月MySQL使用是很具伸缩性的算法,因此你通常能用很少的内存运行或 ...

  2. f# mathprovider

    http://mathprovider.codeplex.com/ http://mathnetnumerics.codeplex.com/releases/view/110750 http://py ...

  3. Web前端开发的四个阶段(小白必看)

    第一阶段:HTML的学习 超文本标记语言(HyperText Mark-up Language 简称HTML)是一个网页的骨架,无论是静态网页还是动态网页,最终返回到浏览器端的都是HTML代码,浏览器 ...

  4. 应用开始界面简单倒计时的dialog

    activity_main.xml 下面图片显示的还要在activity_main.xml里面加个TextView <?xml version="1.0" encoding= ...

  5. java实现斐波那契的两种方法

    package com.ywx.count; /** * 斐波那契数列(地推方式要比递归方式的效率要高) * @author Vashon(yangwenxue) * date:20150320 */ ...

  6. ubuntu下安装mongo扩展

    安装openssl apt-get install openssl libssl-dev libssl0.9.8 libgtk2.0-dev 安装php-pear apt-get install ph ...

  7. Windows Server 启用匿名共享

    1.开始 → 运行 → gpedit.msc,打开组策略编辑器: 2.依次展开"计算机配置" → "windows设置" → "安全设置"  ...

  8. centos7环境搭建Eureka-Server注册中心集群

    目的:测试和线上使用这套独立的Eureka-Server注册中心集群,目前3台虚拟机集群,后续可直接修改配置文件进行新增或减少集群机器. 系统环境: Centos7x64 java8+(JDK1.8+ ...

  9. uva1611 Crane

    类似煎饼,先把1放到1,之后是子问题   (先放到前一半,再放到开头,两次操作)(任何位置,最多一次就可以放到前一半)) #include<iostream> #include<ve ...

  10. IntelliJ IDEA使用eclipse compiler(ecj)解决lombok编译问题

    1:为什么要使用在idea使用eclipse compiler(ecj)? 因为idea默认使用javac,而javac当在编译时发现一个编译错误就直接停止编译了.而ecj支持proceed on e ...