bzoj1823 [JSOI2010]满汉全席(2-sat)

17人阅读 评论(0) 收藏 举报
分类:

挺裸的2-sat

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std;
#define inf 0x3f3f3f3f
#define N 110
#define ll long long
inline char gc(){
    static char buf[1<<16],*S,*T;
    if(S==T){T=(S=buf)+fread(buf,1,1<<16,stdin);if(T==S) return EOF;}
    return *S++;
}
int n,m,id[N][2],tot,h[N<<1],num=0;
int bel[N<<1],dfn[N<<1],low[N<<1],dfnum=0,scc=0;
bool inq[N<<1];stack<int>qq;
inline int read(){
    int x=0,f=-1;char ch=gc();
    while(ch<'0'||ch>'9'){if(ch=='m') f=0;if(ch=='h') f=1;ch=gc();}
    while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=gc();
    return f==-1?x:id[x][f];
}
struct edge{
    int to,next;
}data[2010];
inline void add(int x,int y){
    data[++num].to=y;data[num].next=h[x];h[x]=num;
}
inline void tarjan(int x){
    dfn[x]=low[x]=++dfnum;qq.push(x);inq[x]=1;
    for(int i=h[x];i;i=data[i].next){
        int y=data[i].to;
        if(!dfn[y]) tarjan(y),low[x]=min(low[x],low[y]);
        else if(inq[y]) low[x]=min(low[x],dfn[y]);
    }if(low[x]==dfn[x]){
        ++scc;while(1){
            int y=qq.top();qq.pop();inq[y]=0;
            bel[y]=scc;if(y==x) break;
        }
    }
}
int main(){
//  freopen("a.in","r",stdin);
    int tst=read();
    while(tst--){
        n=read();m=read();tot=-1;memset(h,0,sizeof(h));num=0;
        memset(dfn,0,sizeof(dfn));dfnum=0;scc=0;
        for(int i=1;i<=n;++i) id[i][0]=++tot,id[i][1]=++tot;
        while(m--){
            int x=read(),y=read();add(x^1,y);add(y^1,x);
        }for(int i=0;i<=tot;++i) if(!dfn[i]) tarjan(i);bool flag=0;
        for(int i=1;i<=n;++i)
            if(bel[id[i][0]]==bel[id[i][1]]){flag=1;break;}
        puts(flag?"BAD":"GOOD");
    }return 0;
}
查看评论

Bzoj1823:[JSOI2010]满汉全席:2-sat

题目连接:1823:[JSOI2010]满汉全席 2-sat首题! 2-sat的图中每一条变、边表示选了i必须选j 拆点,一个表示选一个表示不选,跑tarjan,如果有一个点拆成的两个点在一个联通分量...
  • qq_34025203
  • qq_34025203
  • 2016-07-06 16:20:11
  • 570

bzoj1823 JSOI2010 满汉全席 2-SAT 经典建模

JSOI2010 满汉全席 2-SAT思想的经典应用 思路巧妙编程复杂度低
  • u012457935
  • u012457935
  • 2014-05-09 10:45:44
  • 1582

[BZOJ1823][JSOI2010]满汉全席(2-SAT)

题目描述传送门题解2-SAT问题 首先mx和hx最多选一个 然后对于一个评委,栗如mi,hj的话,那么选了hi就必选hj,以此类推代码#include #include #include #inc...
  • Clove_unique
  • Clove_unique
  • 2017-02-21 14:03:21
  • 865

【bzoj1823】[JSOI2010]满汉全席 2-sat

学习一下2-sat 算法流程如下: 1、建图,图具有对称性(对于有限制的A,从A‘向A连边) 2、tarjan算法缩点 3、判断是否有解:若存在一组A和A'在同一个强连通分量中,则无解 4、...
  • u012288458
  • u012288458
  • 2016-07-11 21:05:42
  • 587

[BZOJ1823][JSOI2010]满汉全席 && 2-sat

PPT:http://wenku.baidu.com/view/afd6c436a32d7375a41780f2.html 这是道2-sat裸题吧 练手的 #include #include #i...
  • shiyukun1998
  • shiyukun1998
  • 2015-04-29 12:49:34
  • 384

BZOJ1823: [JSOI2010]满汉全席 2-sat

裸的2-sat 选(hi,mj)(hi,mj)的话就连(i′,j)(j′,i)(i',j )( j',i) 特别的(hi,mi)(hi,mi)不用连 最近集训被吊打啊 好蒻 打算扎实学习一阵 总觉得...
  • Devil_Gary
  • Devil_Gary
  • 2017-12-22 20:20:40
  • 339

[BZOJ1823]-[JSOI2010]满汉全席-2-SAT

说在前面 把所有的int都换成了short妄图缩小空间,然而并没有什么用… 好奇那些空间消耗才几十KB是怎么办到的…me的A+B都820KB…. 什么时候一定要把 时空优化 好好学一学,嗯! ...
  • Izumi_Hanako
  • Izumi_Hanako
  • 2018-01-19 15:13:55
  • 99

[bzoj1823][JSOI2010]满汉全席 2-sat

对时间的慷慨,就等于慢性自杀。
  • youhavepeople
  • youhavepeople
  • 2017-06-06 19:17:49
  • 179

[2-SAT] [BZOJ1823] [JSOI2010]满汉全席

[(http://www.lydsy.com/JudgeOnline/problem.php?id=1823)]比较简单的2-SAT QwQ 0 1分别表示用汉式还是满式 根据评委条件连边就行了#...
  • qq_35802962
  • qq_35802962
  • 2017-10-07 17:33:55
  • 65

[2-sat] bzoj1823: [JSOI2010]满汉全席

bzoj 1823: [JSOI2010]满汉全席 http://www.lydsy.com/JudgeOnline/problem.php?id=1823 2-sat 模板题 dalao一眼A ...
  • qq_36038511
  • qq_36038511
  • 2018-03-20 13:25:56
  • 9
    个人资料
    持之以恒
    等级:
    访问量: 9万+
    积分: 1万+
    排名: 1961
    文章分类
    文章存档
    最新评论