NOT a SAT 문제
시간 제한2초메모리 제한1024 MB
주어진 CNF를 거짓으로 만드는 변수 값을 찾습니다. 모든 절에 변수와 그 부정이 함께 있으면 NO를 출력합니다.
문제
SAT 문제는 주어진 CNF가 참이 되도록 논리 변수에 참과 거짓을 적절히 배정할 수 있는지 판별하는 문제이다.
- CNF는 하나 이상의 절이 (논리곱)로 연결된 논리식이다.
- 절은 논리 변수 또는 논리 변수의 부정이 하나 이상 (논리합)로 연결된 논리식이다.
예를 들어 와 는 절이다. 두 절을 이으면 인 CNF가 된다.
이 문제는 SAT 문제가 아니다. 이 문제에서는 CNF를 참으로 만드는 대신 CNF를 거짓으로 만들어야 한다.
입력
첫째 줄에 논리 변수의 개수 과 CNF에 있는 절의 개수 이 주어진다. (, )
둘째 줄부터 개의 줄에 각 절의 정보가 주어진다. 각 줄의 첫 번째 정수 는 절에 있는 논리 변수의 개수이며 (), 이어서 개의 정수 가 공백으로 구분되어 주어진다. 가 양수이면 가 절에 들어 있고, 음수이면 가 절에 들어 있다 ().
모든 줄의 의 합은 500000 이하이다.
출력
첫째 줄에 CNF의 결과를 거짓으로 만들 수 있다면 YES를, 없다면 NO를 출력한다.
CNF의 결과를 거짓으로 만들 수 있다면 둘째 줄에 CNF의 값을 거짓으로 만드는 의 값을 공백으로 구분하여 출력한다. 가 참이면 을, 거짓이면 을 출력한다. 가능한 배정이 여러 가지라면 그중 아무거나 하나를 출력한다.