만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

2-SAT 만족 가능성

면접 대비

시간 제한1초메모리 제한256 MB

요약
N개 불리언 변수에 M개 절을 모두 참으로 만드는 값을 배정할 수 있는지 판정합니다.
난이도

쉬움10점 중 3점

유형
완전 탐색, 비트 연산
정답자
아직 제출이 없습니다

문제

2-SAT은 불리언 변수 x1,x2,…,xNx_1, x_2, \ldots, x_N이 있을 때, 2-CNF 식을 true로 만드는 값 배정이 있는지 판정하는 문제이다.

2-CNF 식은 (x∨y)∧(¬y∨z)∧(x∨¬z)∧(z∨y)(x \lor y) \land (\lnot y \lor z) \land (x \lor \lnot z) \land (z \lor y)와 같은 형태이다. 괄호로 묶인 각 부분을 절이라고 하며, 절은 변수 두 개를 ∨\lor로 묶은 것이다. ∨\lor는 OR, ∧\land는 AND, ¬\lnot은 NOT을 뜻한다.

변수의 개수 NN과 절의 개수 MM, 그리고 식 ff가 주어졌을 때, 식 ff를 true로 만들 수 있는지 없는지를 판정하는 프로그램을 작성하시오.

예를 들어 N=3N = 3, M=4M = 4이고 f=(¬x1∨x2)∧(¬x2∨x3)∧(x1∨x3)∧(x3∨x2)f = (\lnot x_1 \lor x_2) \land (\lnot x_2 \lor x_3) \land (x_1 \lor x_3) \land (x_3 \lor x_2)인 경우, x1x_1을 false, x2x_2를 false, x3x_3을 true로 정하면 식 ff가 true가 된다. 반면 N=1N = 1, M=2M = 2이고 f=(x1∨x1)∧(¬x1∨¬x1)f = (x_1 \lor x_1) \land (\lnot x_1 \lor \lnot x_1)인 경우에는 x1x_1에 어떤 값을 넣어도 식 ff를 true로 만들 수 없다.

입력

첫째 줄에 변수의 개수 NN (1≤N≤201 \le N \le 20)과 절의 개수 MM (1≤M≤1001 \le M \le 100)이 주어진다. 둘째 줄부터 MM개의 줄에 절이 한 줄에 하나씩 주어진다. 절은 두 정수 ii와 jj (1≤∣i∣,∣j∣≤N1 \le |i|, |j| \le N)로 이루어지며, 양수는 각각 xix_i와 xjx_j를, 음수는 각각 ¬x−i\lnot x_{-i}와 ¬x−j\lnot x_{-j}를 뜻한다.

출력

첫째 줄에 식 ff를 true로 만들 수 있으면 1을, 없으면 0을 출력한다.

예제4

  1. 예제 1

    입력
    3 4
    -1 2
    -2 3
    1 3
    3 2
    
    예상 출력
    1
    
  2. 예제 2

    입력
    1 2
    1 1
    -1 -1
    
    예상 출력
    0
    
  3. 예제 3

    입력
    1 1
    1 1
    
    예상 출력
    1
    
  4. 예제 4

    입력
    1 1
    -1 1
    
    예상 출력
    1