POJ3678
来源:互联网 发布:windows编程视频下载 编辑:程序博客网 时间:2024/06/05 18:10
来自我的新博客
Description:
Solution:
Code:
#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>#include <iostream>using namespace std;struct bian_{ int next; int to;}bian[4000010]={{0,0}};int First[2010]={0};int N,M;int bianp=0;int stack[2010]={0};int inst[2010]={0};int stp=0;int dfsp=0;int dfn[2010]={0};int Low[2010]={0};int belong[2010]={0};int bep=0;void Add(int p,int q,int k){ bian[k].to=q; bian[k].next=First[p]; First[p]=k; return;}void read_int(int &x){ x=0; char ch=getchar(); for(;ch=='\n' || ch=='\r' || ch=='\0' || ch==' ';ch=getchar()); for(;ch>='0' && ch<='9';ch=getchar()) x=x*10+ch-'0'; return;}char getCH(){ char ch=getchar(); for(;ch=='\n' || ch=='\r' || ch=='\0' || ch==' ';ch=getchar()); for(char tt=getchar();tt>='A' && tt<='Z';tt=getchar()); return ch;}void dfs(int cnt){ dfn[cnt]=++dfsp; Low[cnt]=dfn[cnt]; stack[++stp]=cnt; inst[cnt]=1; for(int i=First[cnt];i!=0;i=bian[i].next) { int u=bian[i].to; if(dfn[u]==0) { dfs(u); Low[cnt]=min(Low[cnt],Low[u]); } else if(inst[u]==1) Low[cnt]=min(Low[cnt],dfn[u]); } if(Low[cnt]==dfn[cnt]) { bep++; for(;;) { int u=stack[stp]; stack[stp--]=0; belong[u]=bep; inst[u]=0; if(u==cnt) break; } } return;}int main(){ cin>>N>>M; for(int i=1;i<=M;i++) { int p,q,r; read_int(p);read_int(q);read_int(r); p++,q++; char str=getCH(); if(str=='A') { if(r==1) { Add(p<<1,(p<<1)-1,++bianp); Add(q<<1,(q<<1)-1,++bianp); } else { Add((p<<1)-1,q<<1,++bianp); Add((q<<1)-1,p<<1,++bianp); } } else if(str=='O') { if(r==1) { Add(p<<1,(q<<1)-1,++bianp); Add(q<<1,(p<<1)-1,++bianp); } else { Add((p<<1)-1,p<<1,++bianp); Add((q<<1)-1,q<<1,++bianp); } } else if(str=='X') { int P[2]={(p<<1)-1,p<<1}; int Q[2]={(q<<1)-1,q<<1}; Add(P[0],Q[r],++bianp); Add(P[1],Q[r^1],++bianp); Add(Q[0],P[r],++bianp); Add(Q[1],P[r^1],++bianp); } } for(int i=1;i<=(N<<1);i++) { if(dfn[i]==0) dfs(i); } for(int i=1;i<=N;i++) { if(belong[i<<1]==belong[(i<<1)-1]) { puts("NO"); return 0; } } puts("YES"); return 0;}
0 0
- POJ3678
- POJ3678
- 2-sat POJ3678
- poj3678 2-sat
- poj3678 Katu Puzzle
- [POJ3678] Katu Puzzle
- POJ3678——Katu Puzzle
- 2-SAT——POJ3678
- POJ3678:Katu Puzzle 2-SAT
- poj3678 Katu Puzzle 【解法一】
- poj3678 Katu Puzzle 【解法二】
- [2-sat]模型基础(poj3678)
- POJ3678 Katu Puzzle【2-SAT】
- POJ3678 HDU4421 2-sat的建边
- 2-sat(and,or,xor)poj3678
- POJ3678 Katu Puzzle (2-SAT检验)
- [POJ3678]Katu Puzzle(2-SAT)
- poj3678:Katu Puzzle(2-SAT)
- Virtualbox 安装kali Linux
- 高效使用JavaEE ORM框架
- Linux 内存管理
- 蓝牙聊天小项目——(2015.12.13暂时完结篇)
- XMPP客户端库Smack 4.1.4版官方开发文档之五
- POJ3678
- 怎样在android中添加背景图片?
- [leetcode] Number of Islands
- 九度OJ 1163:素数 (素数)
- 王爽 汇编语言 实验9:显示解答
- java线程同步方法
- jquery UI 隐藏关闭按钮
- CodeBlocks常用操作快捷键
- 在C语言的库函数中就有快速排序的库函数,即为qsort