2-SAT 만족 가능성 판정

아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

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

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

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

예를 들어 N=3N = 3, M=4M = 4, f=(¬x1x2)(¬x2x3)(x1x3)(x3x2)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=(x1x1)(¬x1¬x1)f = (x_1 \lor x_1) \land (\lnot x_1 \lor \lnot x_1)이면 x1x_1에 어떤 값을 넣어도 ff는 true가 되지 않는다.

입력

첫째 줄에 변수의 개수 NN (1N100001 \le N \le 10000)과 절의 개수 MM (1M1000001 \le M \le 100000)이 주어진다. 둘째 줄부터 MM개의 줄에 절이 한 개씩 주어진다. 절은 두 정수 iijj (1i,jN1 \le |i|, |j| \le N)로 이루어진다. ii가 양수면 xix_i를, 음수면 ¬xi\lnot x_{-i}를 뜻하고, jj도 같은 방식으로 읽는다.

출력

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