[2-sat] bzoj1823: [JSOI2010]满汉全席
2018-03-20 13:25
253 查看
bzoj 1823: [JSOI2010]满汉全席 http://www.lydsy.com/JudgeOnline/problem.php?id=1823
2-sat 模板题 dalao一眼A
模板题在这里->http://caioj.cn/problem.php?id=1405
一种材料有两种做法
例如评审员a要求材料1要做成汉式,材料2要做成满式时 要通过评审员那么满式的1和汉式的2就不能同时出现
这就是不相容条件辣 oAo
然然后要统一是从正形式连到反形式还是反过来
然然然后一直WA我也不知道改了什么就A了
2-sat 模板题 dalao一眼A
模板题在这里->http://caioj.cn/problem.php?id=1405
一种材料有两种做法
例如评审员a要求材料1要做成汉式,材料2要做成满式时 要通过评审员那么满式的1和汉式的2就不能同时出现
这就是不相容条件辣 oAo
然然后要统一是从正形式连到反形式还是反过来
然然然后一直WA我也不知道改了什么就A了
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct node { int x,y,next; }a[2100]; int last[210],len; int dfn[210],low[210],id; int belong[210],cnt,sta[210],top; bool v[210]; void build(int x,int y) { len++; a[len].x=x;a[len].y=y;a[len].next=last[x];last[x]=len; } void dfs(int x) { dfn[x]=low[x]=++id; v[x]=false;sta[++top]=x; for (int k=last[x];k;k=a[k].next) { int y=a[k].y; if (dfn[y]==0) { dfs(y); low[x]=min(low[x],low[y]); } else { if (v[y]==false) low[x]=min(low[x],dfn[y]); } } if (low[x]==dfn[x]) { cnt++; int i=0; while (i!=x) { i=sta[top--]; v[i]=true; belong[i]=cnt; } } } int main() { //freopen("1823.out","w",stdout); //同一材料 汉式和满式只能选一种做 满足不相容条件 int t; int n,m; scanf("%d",&t); while (t--) { memset(last,0,sizeof(last));len=0; memset(dfn,0,sizeof(dfn)); memset(low,0,sizeof(low));id=0; memset(belong,0,sizeof(belong));cnt=top=0; memset(v,true,sizeof(v)); scanf("%d%d",&n,&m); for (int i=1;i<=m;i++) { int x=0,y=0,xx,yy;char c1[6],c2[6]; scanf("%s %s",c1,c2); int k=1; while (c1[k]!=0) {x=x*10+c1[k]-'0';k++;}k=1; while (c2[k]!=0) {y=y*10+c2[k]-'0';k++;} if (c1[0]=='m') x+=n; if (c2[0]=='m') y+=n; xx=x;yy=y; //因为要同时满足x和y 所以相反菜式就不能同时出现 这两个即为不相容条件 那么就连相反条件 if (c1[0]=='h') xx+=n; else xx-=n; if (c2[0]=='h') yy+=n; else yy-=n; build(xx,y); build(yy,x); } for (int i=1;i<=2*n;i++) { if (dfn[i]==0) dfs(i); } int bk=false; for (int i=1;i<=n;i++) { if (belong[i]==belong[i+n]) {bk=true;break;} } if (bk) printf("BAD\n"); else printf("GOOD\n"); } return 0; }
相关文章推荐
- bzoj1823 [JSOI2010]满汉全席(2-SAT)
- [BZOJ1823][JSOI2010]满汉全席(2-SAT)
- BZOJ 1823 [JSOI2010]满汉全席 2-SAT
- BZOJ 1823 JSOI 2010 满汉全席 2-SAT
- bzoj 1823: [JSOI2010]满汉全席 && bzoj 2199 : [Usaco2011 Jan]奶牛议会 2-sat
- bzoj 1823: [JSOI2010]满汉全席 (2-SAT)
- 【bzoj1823】【jsoi2010】【满汉全席】【2-sat】
- 【bzoj1823】[JSOI2010]满汉全席 2-SAT
- bzoj1823 JSOI2010 满汉全席 2-SAT 经典建模
- bzoj1823 [JSOI2010]满汉全席(2-SAT)
- [bzoj1823][JSOI2010]满汉全席 2-sat
- bzoj 1823: [JSOI2010]满汉全席 -- 2-sat
- [bzoj1823][JSOI2010]满汉全席——2-SAT
- BZOJ1823 [JSOI2010]满汉全席 【2-sat】
- [BZOJ1823]-[JSOI2010]满汉全席-2-SAT
- BZOJ 1823 JSOI 2010 满汉全席 2-SAT
- BZOJ 1823 [JSOI2010]满汉全席 - 2-sat
- BZOJ1823 [JSOI2010]满汉全席 【2-sat】
- 【BZOJ1823】[JSOI2010]满汉全席 2-SAT
- |BZOJ 1823|2-SAT|[JSOI2010]满汉全席