[1. 문제 설명]
[2. 풀이 접근]
오답이었던 방식
- 1 을 포함하는 경우는 x1 이 반드시 true 이어야 하므로 무시한다. (true / false 중 아무거나 와도 된다.)
- -1 을 포함하는 경우는, 해당 절을 true 로 만들어야 하므로, xi 에 오는 값을 정할 수 있다.
=> (true 또는 false 중 하나가 되야 한다.) - 이때, xi 에 이미 값이 할당되어있고, 이번에 할당 할 값 과 다르면 전체 식을 true 로 만들 수 없다.
=> 앞에 절을 참으로 한 값을 변경하면, 이번 절이 참이 되나,
=> 그 전의 절은 false 가 되므로 전체 식을 true 로 할 수 없다.
=> "no" 를 출력한다. - 논리식에 대한 그래프를 만들고 난 뒤, scc 로 묶는다.
- n 과 -n 이 같은 scc 에 있으면, "no" 를 출력한다.
- 모든 n 과 -n 이 다른 scc 에 있으면, "yes" 를 출력한다.
반례를 모르겠다.
아마, xi 와 -1 이 같이 있어, xi고정된 값을 주었는데, 실제 해를 구한 것과 다른 경우 => 모순 => "no" 출력해야함
=> xi 가 다른 절 에는 포함되서 해를 구해 볼 수 있다면,
=> 이 경우를 체크안해서?
올바른 접근
- x1 이 반드시 참이 되어야 하는 절이 필요하다.
- 전체 논리식에 (x1 ∨ x1) 을 추가한다.
- 이후, 2-SAT 와 같은 방식으로 풀이한다.
[3. 코드]
'알고리즘 > Baekjoon' 카테고리의 다른 글
완전 탐색. [14501] (0) | 2022.12.05 |
---|---|
DP/최단거리 역추적. [11780] (0) | 2022.11.30 |
SCC. [11281] (0) | 2022.11.28 |
SCC. [11280] (0) | 2022.11.27 |
SCC. [4013] (0) | 2022.11.27 |