博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ1823 [JSOI2010]满汉全席 2-sat
阅读量:4659 次
发布时间:2019-06-09

本文共 1987 字,大约阅读时间需要 6 分钟。

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



题意概括

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

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

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


题解

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


代码

#include 
#include
#include
#include
#include
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;}

  

转载于:https://www.cnblogs.com/zhouzhendong/p/BZOJ1823.html

你可能感兴趣的文章
Google疯了,竟然这样!
查看>>
团队冲刺第九天
查看>>
KingPaper初探redist 之redis设置分析
查看>>
函数库学习入门指引
查看>>
bzoj 2339: [HNOI2011]卡农
查看>>
带参数存储过程的小例子
查看>>
对8086地址的理解.
查看>>
[zz]在python中运行一个外部程序
查看>>
15-浮动
查看>>
Linux下MySQL表名不区分大小写的设置方法
查看>>
求几天后是几月几号1022
查看>>
vc++网络安全编程范例(20)木马防范检测数据端口与进程
查看>>
Tango with Django 1.9 中文——1.概述
查看>>
年度榜单:2012年最流行的28款免费英文字体素材
查看>>
数据类型范围
查看>>
codeforce 8A-8C
查看>>
湖南省第六届大学生程序设计大赛原题 F Biggest Number (UVA1182)
查看>>
Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式
查看>>
dll和exe的共享节------多进程共享dll/exe全局变量
查看>>
Flex编程注意之如何得到itemRenderer里面的内容
查看>>