페이지

11277번: 2-SAT - 1

https://www.acmicpc.net/problem/11277


#include<stdio.h>
int n, m, a[100], b[100];
int f(int x, int y) {
    return x < 0 ? 1 - (y >> -x - 1) % 2 : (y >> x - 1) % 2;
}
int main() {
    scanf("%d %d", &n, &m);
    for (int i = 0; i < m; i++)
        scanf("%d %d", &a[i], &b[i]);
    bool res = false;
    for (int i = 0; i < 1 << n; i++) {
        bool flag = true;
        for (int j = 0; j < m; j++)
            flag &= f(a[j], i) | f(b[j], i);
        res |= flag;
    }
    printf("%d", res);
    return 0;
}

댓글 없음 :

댓글 쓰기