原文链接http://www.cnblogs.com/zhouzhendong/p/8125944.html


题目传送门 - BZOJ1823


题意概括

  有n道菜,分别可以做成满式和汉式(每道菜只能做成一种形式),有m个专家。

  每个专家喜欢两种菜,比如汉式猪肉和满式牛肉。

  问是否存在方案使得所有专家都被满足。


题解

  2-sat模版题,连方案都不用输出,水过……


代码

#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cmath>
using namespace std;
bool isd(char ch){
return '0'<=ch&&ch<='9';
}
int read(){
int res=0;
char ch=getchar();
while (!isd(ch))
ch=getchar();
while (isd(ch))
res=(res<<1)+(res<<3)+ch-48,ch=getchar();
return res;
}
char getc(){
char ch=getchar();
while (!('a'<=ch&&ch<='z')&&!isd(ch))
ch=getchar();
return ch;
}
const int N=105*2,M=1005*2;
struct Gragh{
int cnt,y[M],nxt[M],fst[N];
void clear(){
cnt=0;
memset(fst,0,sizeof fst);
}
void add(int a,int b){
y[++cnt]=b,nxt[cnt]=fst[a],fst[a]=cnt;
}
}g;
int T,n,m;
int get_dish(){
char ch=getc();
int v=read();
return v+n*(ch=='m');
}
int calc(int x){
return x+n*(x<=n?1:-1);
}
int dfn[N],low[N],vis[N],st[N],inst[N],top,time,cnt,bh[N];
void Tarjan_Prepare(){
top=time=cnt=0;
memset(inst,0,sizeof inst);
memset(vis,0,sizeof vis);
memset(dfn,0,sizeof dfn);
memset(low,0,sizeof low);
memset(st,0,sizeof st);
memset(bh,0,sizeof bh);
}
void Tarjan(int x){
dfn[x]=low[x]=++time;
st[++top]=x;
inst[x]=vis[x]=1;
for (int i=g.fst[x];i;i=g.nxt[i])
if (!vis[g.y[i]]){
Tarjan(g.y[i]);
low[x]=min(low[x],low[g.y[i]]);
}
else if (inst[g.y[i]])
low[x]=min(low[x],low[g.y[i]]);
if (dfn[x]==low[x]){
cnt++;
bh[st[top]]=cnt;
inst[st[top]]=0;
while (st[top--]!=x){
bh[st[top]]=cnt;
inst[st[top]]=0;
}
}
}
bool check(){
for (int i=1;i<=n;i++)
if (bh[i]==bh[i+n])
return 0;
return 1;
}
int main(){
T=read();
while (T--){
n=read(),m=read();
g.clear();
for (int i=1;i<=m;i++){
int a=get_dish(),b=get_dish();
g.add(a,calc(b));
g.add(b,calc(a));
}
Tarjan_Prepare();
for (int i=1;i<=n*2;i++)
if (!vis[i])
Tarjan(i);
puts(check()?"GOOD":"BAD");
}
return 0;
}

  

BZOJ1823 [JSOI2010]满汉全席 2-sat的更多相关文章

  1. bzoj1823 [JSOI2010]满汉全席(2-SAT)

    1823: [JSOI2010]满汉全席 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1246  Solved: 598[Submit][Status ...

  2. Bzoj1823 [JSOI2010]满汉全席

    Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1640  Solved: 798 Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的 ...

  3. BZOJ1823[JSOI2010]满汉全席——2-SAT+tarjan缩点

    题目描述 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而能够烹饪出经过 ...

  4. BZOJ1823 [JSOI2010]满汉全席 【2-sat】

    题目 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而能够烹饪出经过专家 ...

  5. [bzoj1823][JSOI2010]满汉全席——2-SAT

    题目大意 题目又丑又长我就不贴了,说一下大意,有n种菜,m个评委,每一个评委又有两种喜好,每种菜有满汉两种做法,只能选一种.判断是否存在一种方案使得所有评委至少喜欢一种菜品.输入包含多组数据. 题解 ...

  6. 【BZOJ1823】[JSOI2010]满汉全席(2-sat)

    [BZOJ1823][JSOI2010]满汉全席(2-sat) 题面 BZOJ 洛谷 题解 很明显的\(2-sat\)模板题,还不需要输出方案. 对于任意两组限制之间,检查有无同一种石材要用两种不同的 ...

  7. 【BZOJ1823】[JSOI2010]满汉全席 2-SAT

    [BZOJ1823][JSOI2010]满汉全席 Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只 ...

  8. C++之路进阶——bzoj1823(满汉全席)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  hyxzc Logout 捐赠本站 Notice:由于本OJ建立在 ...

  9. BZOJ 1823: [JSOI2010]满汉全席( 2-sat )

    2-sat...假如一个评委喜好的2样中..其中一样没做, 那另一样就一定要做, 这样去建图..然后跑tarjan. 时间复杂度O((n+m)*K) ------------------------- ...

随机推荐

  1. 【原创】大数据基础之Marathon(2)marathon-lb

    marathon-lb 官方:https://github.com/mesosphere/marathon-lb 一 简介 Marathon load balancer (Marathon-LB) i ...

  2. [HTTP]Etag的工作流程

    1. 浏览器首次访问该资源时,web服务器返回资源的同时,响应报文头携带ETag标签: 2. 浏览器将保存该Etag标签的值: 3. 当浏览器发起下一次请求,请求报文头将会携带 If-None-Mat ...

  3. 将list集合转json

    public static class DataHelper { /// /// js 序列化器 /// static JavaScriptSerializer jss = new JavaScrip ...

  4. Sql语句分页,有待优化

    封装成存储过程,但是有点小问题,如果有弄好了的朋友可留言,谢谢了,我只提供了一个模版哈(也是我想实现的功能) create procedure paging_procedure ( @pageInde ...

  5. 树·二叉查找树ADT(二叉搜索树/排序树)

    1.定义 对于每个节点X,它的左子树中所有的项的值小于X的值,右子树所有项的值大于X的值. 如图:任意一个节点,都满足定义,其左子树的所有值小于它,右子树的所有值大于它. 2.平均深度 在大O模型中, ...

  6. Net 4.5 WebSocket 在 Windows 7, Windows 8 and Server 2012上的比较

    .Net 4.5 WebSocket Server Running on Windows 7? Net 4.5 WebSocket Server 可以运行在 Windows 7,但是Net 4.5的 ...

  7. Confluence 6 Oracle 连接问题解决

    如果 Confluence 提示没有 class 文件,你可能将你的 JDBC 驱动放置到了错误的文件夹. 下面的页面包含了一些你在使用 Oracle 数据库连接的时候可能会遇到的常见问题,请参考: ...

  8. Confluence 6 后台中为站点添加应用导航

    Confluence 6 后台中为站点添加应用导航的连界面和方法. https://www.cwiki.us/display/CONFLUENCEWIKI/Configuring+the+Site+H ...

  9. Android CTS Test

    什么是CTS测试?了解这个问题前,我们先来搜索了解一遍“Google GMS 认证”.GMS全称为GoogleMobile Service,即谷歌移动服务.说白了GMS其实就是一系列谷歌的应用集合.谷 ...

  10. PHP 命名空间与自动加载机制

    include 和 require 是PHP中引入文件的两个基本方法.在小规模开发中直接使用 include 和 require 没哟什么不妥,但在大型项目中会造成大量的 include 和 requ ...