1823: [JSOI2010]满汉全席
来源:互联网 发布:看淘宝 编辑:程序博客网 时间:2024/04/27 17:12
题目链接
题目大意:n个条件,选a||b,判断可行性
题解:2-sat
我的收获:第一个2-sat……本题只需要求可行性,tarjan后判断一下就好了
Orz
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int M=1005;int T,n,m,t;int scnt,tim,tp;int head[M],dfn[M],low[M],st[M],col[M];bool ins[M];struct edge{int to,nex;}e[M*4];void add(int u,int v){e[t].to=v,e[t].nex=head[u],head[u]=t++;}int get(){ int p;char c; for(c=getchar();c!='m'&&c!='h';c=getchar()); scanf("%d",&p);p*=2; return c=='m'?p:p+1;}void tarjan(int x){ int now=0; dfn[x]=low[x]=++tim; st[++tp]=x;ins[x]=1; for(int i=head[x];i!=-1;i=e[i].nex){ int v=e[i].to; if(!dfn[v]){tarjan(v);if(low[v]<low[x]) low[x]=low[v];} else if(ins[v]&&dfn[v]<low[x]) low[x]=dfn[v]; } if(low[x]==dfn[x]){ scnt++; while(x!=now){ now=st[tp--]; ins[now]=0;col[now]=scnt; } }}void work(){ for(int i=1;i<=n*2+1;i++) if(!dfn[i]) tarjan(i); for(int i=1;i<=n;i++) if(col[i*2]==col[i*2+1]) {puts("BAD");return ;} puts("GOOD");}void init(){ int x,y,xh,yj; t=0;memset(head,-1,sizeof(head)); for(int i=1;i<=M;i++) dfn[i]=low[i]=col[i]=0; tim=scnt=tp=0; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ x=get();y=get(); xh=x^1,yj=y^1; add(xh,y);add(yj,x); }}int main(){ cin>>T; while(T--){ init(); work(); } return 0;}
0 0
- 【BZOJ 1823】 [JSOI2010]满汉全席
- BZOJ 1823: [JSOI2010]满汉全席
- bzoj 1823 [JSOI2010]满汉全席
- 1823: [JSOI2010]满汉全席
- 1823: [JSOI2010]满汉全席
- BZOJ 1823 [JSOI2010] 满汉全席
- bzoj 1823: [JSOI2010]满汉全席
- BZOJ 1823 [JSOI2010]满汉全席
- 1823: [JSOI2010]满汉全席 2-SAT
- 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
- bzoj1823: [JSOI2010]满汉全席
- BZOJ1823: [JSOI2010]满汉全席
- BZOJ1823 [JSOI2010]满汉全席
- Android初始内存
- python库---pandas使用简要说明
- UVA 11324 有向图强连通分量缩点得SCC图,并在其上求最长路径
- 使用指针在函数间通信
- Redis安全配置,以防数据库被入侵恶意清空,数据丢失,且dump.rdb文件无法恢复
- 1823: [JSOI2010]满汉全席
- form表单 一个input时 回车自动提交
- 适配器模式(python)
- 详解java类的生命周期
- 用WINHEX合并两个或多个BIN文件
- C++ Deque(双向队列)
- Java笔记 - 集合(Arrays)
- 数学符号arg含义
- Android Theme 主题总结