zoukankan      html  css  js  c++  java
  • HihoCoder #1467 : 2-SAT·hihoCoder音乐节

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <queue>
    using namespace std;
    
    int m,n,T;
    int map[201][201];
    int rever(int i){
        if (i % 2 == 0) {
            return i - 1;
        }
        else
            return i + 1;
    }
    int main(int argc, const char * argv[]) {
        // insert code here...
        scanf("%d",&T);
        int time;
        for (time=1;time<=T;time++){
            scanf("%d %d",&n,&m);
            int i,j,k;
            memset(map,0,sizeof(map));
            for(i=1;i<=m;i++){
                int a,b;
                char requirement[2];
                scanf("%s",requirement);
                int num;
                char temp;
                sscanf(requirement,"%c%d",&temp,&num);
                if (requirement[0] == 'm'){
                    a = 2*num;
                }
                else {
                    a = 2*num-1;
                }
                scanf("%s",requirement);
                sscanf(requirement,"%c%d",&temp,&num);
                if (requirement[0] == 'm'){
                    b = 2*num;
                }
                else {
                    b = 2*num - 1;
                }
                map[rever(a)][b] = 1;
                map[rever(b)][a] = 1;
            }
            for (k=1;k<=2*n;k++){
                for (i=1;i<=2*n;i++){
                    for (j=1;j<=2*n;j++){
                        if (map[i][j]) continue;
                        if (map[i][k] && map[k][j])
                            map[i][j] = 1;
                    }
                }
            }
            int ok = 1;
            for (i=1;i<=n;i++){
                if (map[2*i][2*i-1] && map[2*i-1][2*i]){
                    ok = 0;
                    break;
                }
            }
            if (ok) printf("GOOD
    ");
            else printf("BAD
    ");
        }
        
        return 0;
    }

    2SAT问题模板

    又犯蠢啦啊啊啊啊啊

    想当然的直接读取字符串以第二位作为a和b了,找了半天错误,欸

    --正文

    因为n很小直接使用floyd来判断连通性

  • 相关阅读:
    BZOJ 3531[Sdoi2014]旅行
    BZOJ4998 星球联盟
    BZOJ2959 长跑
    【北京集训D2T3】tvt
    [Bzoj]5343: [Ctsc2018]混合果汁
    HGOI20190810 省常中互测3
    HGOI20190809 省常中互测2
    HGOI20190808 省常中互测1
    组合排列和组合数 学习笔记
    2-SAT (two-statisfiability) 算法 学习笔记
  • 原文地址:https://www.cnblogs.com/ToTOrz/p/6349963.html
Copyright © 2011-2022 走看看