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