zoj3656
题解:
按照位展开,然后一位一位判断
注意判断给出数据是否有问题
代码:
#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的更多相关文章
- zoj 3656 2-sat 不错的题
http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemId=4879 TLE了一下午.然后没办法了 去搜题解 发现思路跟我的差点儿相同 可是 ...
随机推荐
- spark 作业提交
kafka-topics.sh --describe --zookeeper xxxxx:2181 --topic testkafka-run-class.sh kafka.tools.GetOffs ...
- Laravel 学习记录
1.当配置 根目录没有指向/public 时 去掉www.blog.im/public 后的文件 需要把 public 文件夹里的..htaccess 文件放到 项目根目录.server.ph ...
- iOS知识点整理
1.宏定义 #define # ## a. 后面一个#是转成字符串 b. 后面## 是连接的作用 2. __attribute__ 常用的 __attribute__(( constructor ...
- 20145321 《Java程序设计》第一周学习总结
20145321 <Java程序设计>第1周学习总结 教材学习内容总结 第一章 1.三大平台:Java SE.Java EE .Java ME 2.Java SE:由JVM.JRE.JDK ...
- springmvc.xml配置图解
- OGNL与ValueStack(VS)-N语法top语法(转)
N语法[0]:<s:property value="[0]"/><br> N语法[1]:<s:property value="[1]&quo ...
- [BZOJ1131]Sta
Description 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input 给出一个数字N,代表有N个点.N<=1000000 下面N-1条边. Output ...
- Axis.Labels.CustomSize
tChart1.Axes.Bottom.Labels.CustomSize = ; //Changes spacing occupied by the axis labels between the ...
- Elasticsearch之IKAnalyzer的过滤停止词
它在哪里呢? 非常重要! [hadoop@HadoopMaster custom]$ pwd/home/hadoop/app/elasticsearch-2.4.3/plugins/ik/config ...
- Linux服务器上ftp的搭建和使用
知识点: 1. FTP的简介.工作原理 2.在Linux上搭建FTP服务器 参考: 阿里云文档:https://help.aliyun.com/knowledge_detail/60152.html ...