【BZOJ】1823: [JSOI2010]滿漢全席(2-sat)

來源:互聯網
上載者:User

標籤:--   min   puts   false   include   sizeof   bzoj   while   get   

題目傳送門:QWQ

 

 

分析

 2-sat模板(然而辣雞如我還是調了好久)

 

 

代碼
//bzoj 1823 2-sat#include <bits/stdc++.h>using namespace std;inline int read(){    int x=0,f=1;char ch=getchar();    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}    while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}    return x*f;}int get(){    int x; char c=getchar();    while(c!=‘m‘&&c!=‘h‘)c=getchar();    if(c==‘m‘)x=read()*2; else x=read()*2-1;    return x;}struct Edge{    int from,to;};vector<int> G[20005];int low[4005], dfn[4005], sccno[4005], dfs_clock, scc_num;stack<int> s;void insert(int u,int v){    G[u].push_back(v);}void tarjan(int u){    dfn[u]=low[u]=++dfs_clock; s.push(u);    for(int i=0;i<G[u].size();i++){        int v=G[u][i];        if(!dfn[v]){            tarjan(v);            low[u]=min(low[u], low[v]);        }else if(!sccno[v]){            low[u]=min(low[u], dfn[v]);        }    }    if(low[u]==dfn[u]){        scc_num++;        for(;;){            int x=s.top(); s.pop();             sccno[x]=scc_num;            if(x==u) break;        }    }}int main(){    int n,m,T=read();    while(T--)    {        while(!s.empty()) s.pop();        n=read(); m=read();        int x,y,xp,yp;        for(int i=0;i<m;i++)        {            x=get(); y=get();            if(x%2==0)xp=x--;            else xp=x++;            if(y%2==0)yp=y--;            else yp=y++;            insert(xp,y); insert(yp,x);        }                memset(dfn,0,sizeof(dfn)); memset(sccno,0,sizeof(sccno));        dfs_clock=scc_num=0;        for(int i=1;i<=2*n;i++)            if(!dfn[i]) tarjan(i);                bool flag=1;        for(int i=1;i<=n;i++)            if(sccno[2*i]==sccno[2*i-1]) flag=false;        if(flag) puts("GOOD");        else puts("BAD");        for(int i=0;i<=2*n;i++) G[i].clear();    }    return 0;}

 

 

 

【BZOJ】1823: [JSOI2010]滿漢全席(2-sat)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.