HDU 1824 Let's go home (2-SAT)

來源:互聯網
上載者:User

標籤:acm   c語言   演算法   編程   2-sat   

題目地址:HDU 1824

這題可以把每隊的兩個隊員看成一個,這樣就是2-sat水題了。。。

代碼如下:

#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <queue>#include <map>#include <set>#include <algorithm>using namespace std;#define LL __int64const int INF=0x3f3f3f3f;int head[2100], cnt, index, top, ans;int dfn[2100], low[2100], instack[2100], stak[2100], belong[2100];int id[2100];struct node{    int u, v, next;}edge[1000000];void add(int u, int v){    edge[cnt].v=v;    edge[cnt].next=head[u];    head[u]=cnt++;}void tarjan(int u){    dfn[u]=low[u]=++index;    stak[++top]=u;    instack[u]=1;    for(int i=head[u];i!=-1;i=edge[i].next)    {        int v=edge[i].v;        if(!dfn[v])        {            tarjan(v);            low[u]=min(low[u],low[v]);        }        else if(instack[v])        {            low[u]=min(low[u],dfn[v]);        }    }    if(dfn[u]==low[u])    {        ans++;        while(1)        {            int v=stak[top--];            instack[v]=0;            belong[v]=ans;            if(u==v) break;        }    }}void init(){    memset(head,-1,sizeof(head));    cnt=index=top=ans=0;    memset(instack,0,sizeof(instack));    memset(dfn,0,sizeof(dfn));}int main(){    int n, m, i, j, a, b, c, flag;    while(scanf("%d%d",&n,&m)!=EOF)    {        init();        for(i=0;i<n;i++)        {            scanf("%d%d%d",&a,&b,&c);            id[a]=i<<1;            id[b]=id[c]=i<<1|1;        }        for(i=0;i<m;i++)        {            scanf("%d%d",&a,&b);            add(id[a],id[b]^1);            add(id[b],id[a]^1);        }        for(i=0;i<2*n;i++)        {            if(!dfn[i])                tarjan(i);        }        flag=0;        for(i=0;i<n;i++)        {            if(belong[i<<1]==belong[i<<1|1])            {                flag=1;                break;            }        }        if(flag)            puts("no");        else            puts("yes");    }    return 0;}


HDU 1824 Let's go home (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.