传送门

解题思路

2-SAT 裸题。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm> using namespace std;
const int MAXN = 1005; inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?-1:1;ch=getchar();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return x*f;
} int n,m,T,head[MAXN],cnt,col_num,num;
int to[MAXN<<1],nxt[MAXN<<1],bl[MAXN];
int stk[MAXN],top,low[MAXN],dfn[MAXN];
bool vis[MAXN]; inline void add(int bg,int ed){
to[++cnt]=ed,nxt[cnt]=head[bg],head[bg]=cnt;
} void tarjan(int x){
low[x]=dfn[x]=++num;vis[x]=1;stk[++top]=x;
for(register int i=head[x];i;i=nxt[i]){
int u=to[i];
if(!dfn[u]) {
tarjan(u);
low[x]=min(low[x],low[u]);
}
else if(vis[u]) low[x]=min(low[x],dfn[u]);
}
if(low[x]==dfn[x]){
vis[x]=0;bl[x]=++col_num;
while(stk[top]!=x){
vis[stk[top]]=0;
bl[stk[top--]]=col_num;
}top--;
}
} int main(){
T=rd();char c1[10],c2[10];
while(T--){
memset(head,0,sizeof(head));
memset(bl,0,sizeof(bl));
memset(dfn,0,sizeof(dfn));
memset(low,0,sizeof(low));
memset(nxt,0,sizeof(nxt));
memset(to,0,sizeof(to));
top=num=col_num=cnt=0;
n=rd();m=rd();bool flag=false;
for(register int i=1;i<=m;i++){
scanf("%s%s",c1+1,c2+1);
int sx=0,sy=0,tx=0,ty=0,x=0,y=0,t1=2,t2=2;
if(c1[1]=='m') sx=1;if(c2[1]=='m') sy=1;
tx=sx^1,ty=sy^1;
while(isdigit(c1[t1])) x=(x<<1)+(x<<3)+c1[t1++]-'0';
while(isdigit(c2[t2])) y=(y<<1)+(y<<3)+c2[t2++]-'0';
// cout<<x<<" "<<y<<endl;
add(x<<1|tx,y<<1|sy);add(y<<1|ty,x<<1|sx);
}
for(register int i=2;i<=(n<<1|1);i++) if(!dfn[i]) tarjan(i);
for(register int i=1;i<=n;i++)
if(bl[i<<1]==bl[i<<1|1]) {
puts("BAD");flag=1;
break;
}
if(!flag) puts("GOOD");
}
return 0;
}

最新文章

  1. python高级之多进程
  2. Python生成器的经典程序
  3. iTextSharp 使用详解(转)
  4. 【Ext.Net学习笔记】04:Ext.Net中使用数据、Ext.Net Store的用法、Ext.Net ComboBox用法
  5. spring cloud教程之使用spring boot创建一个应用
  6. NEU校园网登录器
  7. C 语言中 free() 函数简单分析
  8. Linux下ntpdate时间同步
  9. BZOJ3166: [Heoi2013]Alo
  10. java数组并集/交集/差集(补集)
  11. Java数据库缓存思路
  12. 2014元旦第1周三新的尝试&amp;爬山丢失望远镜
  13. 智能指针剖析(下)boost::shared_ptr&amp;其他
  14. 手动ecache处理
  15. [Vue] karme/jasmine/webpack/vue搭建测试环境
  16. Linux 桌面双击运行脚本
  17. 线段树(segment_tree)
  18. 在windows下golang安装zmq3小记
  19. Python开发——变量
  20. hadoop历史版本,包括大名鼎鼎的hadoop 0.20.2

热门文章

  1. Python全栈开发:Mysql(一)
  2. 使用Cookie实现用户商品历史浏览记录
  3. JavaWeb实现文件下载
  4. where方法的用法是ThinkPHP查询语言的精髓
  5. csps模拟67神炎皇,降雷皇,幻魔皇题解
  6. 「题解」NOIP模拟测试题解乱写II(36)
  7. php curl的隐藏BUG
  8. Android之LinearLayout线性布局
  9. 洛谷P1081——开车旅行
  10. 07_jQuery对象初识(五)事件(非常重要)