BZOJ 1823 [JSOI2010]满汉全席
来源:互联网 发布:软件企业商业模式 编辑:程序博客网 时间:2024/04/27 19:48
好裸的一道题。
建边的思路,对于一个评委来说,设一个材料A选h,B选m,那么若A选m的话,B必须选m,B选h的话,A必须选h(因为两者之一要满足被选)
2-sat的关键思路就是找出一个被选,另一个必须被选的这样的约束关系。
还有就是注意下标!!!2~2n+1
#include<iostream>#include<cstring>#include<cstdlib>#include<cstdio>#include<algorithm>using namespace std;const int maxn=2005;struct edge{ int to,next;}e[maxn<<1];int cnt,n,m,T,scnt,scccnt,dfs_clock;int stack[maxn],dfn[maxn],low[maxn],head[maxn],belong[maxn];bool inq[maxn];void insert(int a,int b){ e[++cnt].to=b;e[cnt].next=head[a];head[a]=cnt;}void tarjan(int u){ dfn[u]=low[u]=++dfs_clock; inq[u]=true; stack[++scnt]=u; for(int i=head[u];i;i=e[i].next) { 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]) { scccnt++; int now=0; while(now!=u) { now=stack[scnt--]; inq[now]=false; belong[now]=scccnt; } }}int main(){ scanf("%d",&T); while(T--) { scccnt=dfs_clock=cnt=0; memset(head,0,sizeof head); memset(dfn,0,sizeof dfn); memset(low,0,sizeof low); scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int x,y;char c1,c2; getchar(); scanf("%c%d %c%d",&c1,&x,&c2,&y); x=(x<<1)+(c1=='h'); y=(y<<1)+(c2=='h'); insert(x^1,y); insert(y^1,x); } for(int i=2;i<=n*2+1;i++)if(!dfn[i]) tarjan(i); bool ok=true; for(int i=1;i<=n;i++) if(belong[i<<1]==belong[(i<<1)+1]) { ok=false; break; } puts(ok?"GOOD":"BAD"); }}
阅读全文
0 0
- 【BZOJ 1823】 [JSOI2010]满汉全席
- BZOJ 1823: [JSOI2010]满汉全席
- bzoj 1823 [JSOI2010]满汉全席
- BZOJ 1823 [JSOI2010] 满汉全席
- bzoj 1823: [JSOI2010]满汉全席
- BZOJ 1823 [JSOI2010]满汉全席
- BZOJ 1823 [JSOI2010]满汉全席题解
- bzoj 1823: [JSOI2010]满汉全席 2-SAT判定
- |BZOJ 1823|2-SAT|[JSOI2010]满汉全席
- bzoj 1823: [JSOI2010]满汉全席 (2-SAT)
- BZOJ 1823 [JSOI2010]满汉全席 2-SAT
- BZOJ[1823][JSOI2010]满汉全席 2-SAT
- 1823: [JSOI2010]满汉全席
- 1823: [JSOI2010]满汉全席
- 1823: [JSOI2010]满汉全席 2-SAT
- bzoj1823: [JSOI2010]满汉全席
- BZOJ1823: [JSOI2010]满汉全席
- BZOJ1823 [JSOI2010]满汉全席
- 第一次学习PHP
- 升级和安装指定版本的ionic
- Android系统架构与系统源码目录
- 分辨率
- Spring-cloud初学 第一个报错
- BZOJ 1823 [JSOI2010]满汉全席
- Eclipse常用快捷键
- 第一个爬虫小程序
- Linux基础命令学习二
- java的闭锁 CountDownLatch 之一家人一起吃个饭
- 教你编写 Node.js 中间件,实现服务端缓存(附demo源码)
- Nginx学习---用不同域名访问同一台机器的不同项目
- js的函数
- 数据库隔离级别