https://www.lydsy.com/JudgeOnline/problem.php?id=1823

https://www.luogu.org/problemnew/show/P4171

题面太长啦就不粘过来啦!

裸的2-SAT用来练板子的。

显然属于“a和b之间必须选一种”模型,只要a'向b连边,b'向a连边即可。

(被这题读入坑了orz)

#include<cstdio>
#include<queue>
#include<cctype>
#include<cstring>
#include<cmath>
#include<stack>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=;
const int M=;
struct node{
int to,nxt;
}e[M];
int T,n,m,head[N],cnt;
int dfn[N],low[N],t,l;
int to[N];
bool inq[N];
stack<int>q;
inline int neg(int x){
if(x>n)return x-n;
return x+n;
}
inline void add(int u,int v){
e[++cnt].to=v;e[cnt].nxt=head[u];head[u]=cnt;
}
void tarjan(int u){
dfn[u]=low[u]=++t;
q.push(u);inq[u]=;
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to;
if(!dfn[v]){
tarjan(v);
low[u]=min(low[u],low[v]);
}else if(inq[v]){
low[u]=min(low[u],dfn[v]);
}
}
if(dfn[u]==low[u]){
int v;l++;
do{
v=q.top();q.pop();
inq[v]=;to[v]=l;
}while(u!=v);
}
}
inline void init(){
cnt=t=l=;
memset(head,,sizeof(head));
memset(dfn,,sizeof(dfn));
}
inline int get(){
int k;char ch=;
while(ch!='m'&&ch!='h')ch=getchar();
scanf("%d",&k);
if(ch=='h')k+=n;
return k;
}
int main(){
scanf("%d",&T);
while(T--){
init();
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
int a=get(),b=get();
add(neg(a),b);
add(neg(b),a);
}
for(int i=;i<=*n;i++)
if(!dfn[i])tarjan(i);
bool flag=;
for(int i=;i<=n&&flag;i++){
if(to[i]==to[i+n])flag=;
}
if(flag)puts("GOOD");
else puts("BAD");
}
}

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

最新文章

  1. Linux发邮件之mail命令
  2. 分布式架构中一致性解决方案——Zookeeper集群搭建
  3. Java List合并去重
  4. 面向服务的体系结构(SOA)——(3)关于BPM
  5. cocos2d-x精灵移动的方法
  6. Solr Dataimport配置
  7. 外观模式-facade实现interface的方式(简单工厂+facade组合使用)
  8. WPF页面切换及弹窗
  9. Dynamics CRM2013 missing prvReadComplexControl privilege
  10. iOS学习心得——UINavigationController
  11. 基于Js实现的UrlEncode和UrlDecode函数代码
  12. NDK常见错误
  13. MongoDB备份和恢复
  14. 三月pat(转)
  15. pwnable.kr-bof-witeup
  16. navicat premium 12破解流程
  17. post方式接口测试(一)_新建测试用例
  18. CentOS6.5搭建OpenVas完全搭建手册(搭建过程总结及小记)
  19. 第 15 章 位操作(binbit)
  20. vue setTimeout--延迟操作

热门文章

  1. MYSQL order by排序与索引关系总结
  2. Qt-QML-安卓编译问题
  3. 180615-精度计算BigDecimal
  4. nginx 重启报错
  5. 服务器返回中文乱码的情况(UTF8编码 -&gt; 转化为 SYSTEM_LOCALE 编码)
  6. 我的linux操作习惯
  7. Python3 Tkinter-Scale
  8. Python3 Tkinter-Button
  9. Bcp 使用心得【转】
  10. POJ 2287 田忌赛马 贪心算法