题解:

按照位展开,然后一位一位判断

注意判断给出数据是否有问题

代码:

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=;
int flag[N],n,b[N][N],ne[*N*N],fi[N],zz[*N*N],num;
int t,zhan[N],dfn[N],m,l,q,ans,low[N],an[N];
void jb(int x,int y)
{
ne[++num]=fi[x];
fi[x]=num;
zz[num]=y;
}
void dfs(int x)
{
low[x]=dfn[x]=++l;
zhan[++t]=x;
flag[x]=true;
for (int i=fi[x];i!=;i=ne[i])
{
if (an[zz[i]])continue;
if(!dfn[zz[i]])dfs(zz[i]);
if(!flag[zz[i]])low[x]=min(low[x],dfn[zz[i]]);else
low[x]=min(low[x],low[zz[i]]);
}
if (dfn[x]==low[x])
{
ans++;
while (zhan[t]!=x)
{
flag[zhan[t]]=false;
an[zhan[t--]]=ans;
}
an[zhan[t--]]=ans;
flag[x]=false;
}
}
void init()
{
ans=num=l=;
memset(fi,,sizeof fi);
memset(an,,sizeof an);
memset(dfn,,sizeof dfn);
}
int main()
{
while (~scanf("%d",&n))
{
for (int i=;i<n;i++)
for (int j=;j<n;j++)scanf("%d",&b[i][j]);
q=;
for (int i=;i<n;i++)
if (b[i][i])q=;
for (int i=;i<n;i++)
for (int j=;j<n;j++)
if (b[i][j]!=b[j][i])q=;
for (int k=;k<;k++)
{
init();
for (int i=;i<n;i++)
for (int j=i+;j<n;j++)
{
int c=b[i][j]&(<<k);
if (i%==&&j%==)
{
if (c==)
{
jb(i+n,i);
jb(j+n,j);
}
else
{
jb(i,j+n);
jb(j,i+n);
}
}
else if (i%==&&j%==)
{
if (c==)
{
jb(i+n,j);
jb(j+n,i);
}
else
{
jb(i,i+n);
jb(j,j+n);
}
}
else
{
if (c==)
{
jb(i,j);
jb(i+n,j+n);
jb(j,i);
jb(j+n,i+n);
}
else
{
jb(i,j+n);
jb(i+n,j);
jb(j,i+n);
jb(j+n,i);
}
}
}
for (int i=;i<*n;i++)
if (!dfn[i])dfs(i);
for (int i=;i<n;i++)
if (an[i]==an[i+n])q=;
if (q)break;
}
if (!q)puts("YES");
else puts("NO");
}
return ;
}

zoj3656的更多相关文章

  1. zoj 3656 2-sat 不错的题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemId=4879 TLE了一下午.然后没办法了 去搜题解 发现思路跟我的差点儿相同 可是 ...

随机推荐

  1. MLlib1.6指南笔记

    MLlib1.6指南笔记 http://spark.apache.org/docs/latest/mllib-guide.html spark.mllib RDD之上的原始API spark.ml M ...

  2. Spring事务回滚

    配置事物: @Configuration /**强制使用cglib代理时就把proxy-target-class设为true.*/ @EnableTransactionManagement(proxy ...

  3. 《阿里巴巴Java开发规约》插件使用

    通过Jetbrains官方仓库安装 1. 打开 Settings >> Plugins >> Browse repositories... 2. 在搜索框输入alibaba即可 ...

  4. 《学习OpenCV3》目录和全书划分

    一 概述 1.   Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...

  5. 20145329 《Java程序设计》实验一总结

    实验指导教师:娄嘉鹏老师 实验日期:2016.4.8 实验时间:16:30~18:30 实验序号:实验一 实验名称:Java开发环境的熟悉 实验目的与要求: 使用JDK编译.运行简单的Java程序. ...

  6. linux第四周

    一.知识点总结 (一)用户态.内核态和中断 1.内核态:在高的执行级别下,代码可以执行特权指令,访问任意的物理地址,这时的CPU就对应内核态 2.用户态:在低级别的指令状态下,代码 只能在级别允许的特 ...

  7. php-fpm 信号

    使用信号之前,需要先确保php-fpm.conf 里面有配置pid,默认是被注释掉的. ;pid = run/php-fpm.pid 文件在 php安装目录/var/run/php-fpm.pid 信 ...

  8. 如何为openwrt中的某个模块生成PKG_MIRROR_HASH

    答:介绍两种方法,第一种自动生成(当然使用自动的啦),第二种手动生成 第一种方法: 1.在软件包的Makefile中让此项写成这样PKG_MIRROR_HASH:=skip  (如果不加上skip,那 ...

  9. 从零开始玩转JMX(四)——Apache Commons Modeler & Dynamic MBean

    Apache Commons Modeler 前面的Model MBean的创建方式看上去特别复杂,一个简单功能的类ModelMBeanUtils 写了很多代码,那有木有简单点的方式呢,答案是肯定的, ...

  10. LeetCode——Integer Break

    Question Given a positive integer n, break it into the sum of at least two positive integers and max ...