zoukankan      html  css  js  c++  java
  • 2-sat——hdu3062基础

    hdu就是会卡cin,,

    另一种建模方式,把点i拆成i*2,i*2+1,有时候这样会比较简单

    #include<bits/stdc++.h>
    using namespace std;
    #define N 4005
    #define M 2000005
    struct Edge{int to,nxt;}e[M<<1];
    int n,m,head[N],tot;
    void add(int u,int v){
        e[tot].to=v;e[tot].nxt=head[u];head[u]=tot++;
    }
    
    int low[N],dfn[N],cnt,id[N],ind,stk[N],top,ins[N];
    void tarjan(int x){
        dfn[x]=low[x]=++ind;
        stk[++top]=x;ins[x]=1;
        for(int i=head[x];i!=-1;i=e[i].nxt){
            int y=e[i].to;
            if(!dfn[y]){
                tarjan(y);
                low[x]=min(low[x],low[y]);
            }
            else if(ins[y])
                low[x]=min(low[x],low[y]);
        }
        if(dfn[x]==low[x]){
            cnt++;int y;
            do{
                y=stk[top--];
                ins[y]=0;
                id[y]=cnt;
            }while(x!=y);
        }
    }
    
    void init(){
        cnt=tot=top=ind=0;
        memset(head,-1,sizeof head);
        memset(dfn,0,sizeof dfn);
        memset(low,0,sizeof low);
        memset(id,0,sizeof id); 
    }
    int main(){
        while(cin>>n>>m && n){
            init();
            for(int i=0;i<m;i++){
                int a,b,c,d;
                scanf("%d%d%d%d",&a,&b,&c,&d);
                a<<=1,b<<=1;
                a+=c;b+=d;
                add(a,b^1),add(b,a^1);
            }
            for(int i=0;i<2*n;i++)
                if(!dfn[i])tarjan(i);
            
            int flag=0;
            for(int i=0;i<n;i++)
                if(id[i*2]==id[i*2+1]){
                    puts("NO");
                    flag=1;
                    break;
                }
            if(!flag)puts("YES");
        }
    }
  • 相关阅读:
    隐马尔科夫模型
    cmake modules default path
    opencv mat
    cmake 查找头文件和库文件顺序
    opencv3.0 legacy和nonfree丢失
    qt include_directories没用
    ros中删除某个包之后用apt安装的包找不到
    sql-select
    关于ros stage与navigation仿真总结5月16号
    关系型数据库
  • 原文地址:https://www.cnblogs.com/zsben991126/p/10871901.html
Copyright © 2011-2022 走看看