图论--2-SAT--poj 3678-Katu Puzzle(模板题)
Description
Katu Puzzle is presented as a directed graph?G(V,?E) with each edge?e(a,?b) labeled by a boolean operator?op?(one of AND, OR, XOR) and an integer?c?(0 ≤?c?≤ 1). One Katu is solvable if one can find each vertex?Vi?a value?Xi?(0 ≤?Xi?≤ 1) such that for each edge?e(a,?b) labeled by?op?and?c, the following formula holds:
?Xa?op?Xb?=?c
The calculating rules are:
AND?? ?0?? ?1
0?? ?0?? ?0
1?? ?0?? ?1
OR?? ?0?? ?1
0?? ?0?? ?1
1?? ?1?? ?1
XOR?? ?0?? ?1
0?? ?0?? ?1
1?? ?1?? ?0
Given a Katu Puzzle, your task is to determine whether it is solvable.
Input
The first line contains two integers?N?(1 ≤?N?≤ 1000) and?M,(0 ≤?M?≤ 1,000,000) indicating the number of vertices and edges.
The following?M?lines contain three integers?a?(0 ≤?a?<?N),?b(0 ≤?b?<?N),?c?and an operator?op?each, describing the edges.
Output
Output a line containing "YES" or "NO".
Sample Input
4 4
0 1 1 AND
1 2 1 OR
3 2 0 AND
3 0 0 XOR
Sample Output
YES
Hint
X0?= 1,?X1?= 1,?X2?= 0,?X3?= 1.
題意:給出N個布爾變量,每個變量要么真要么假?,F在給出M個關系,問你是否存在一組解滿足所有條件。
思路:
一:對于AND?
1,c == 1時,則a和b全為真,建邊 !a -> a 和 !b -> b;
2,c == 0時,則a和b至少一個為假,建邊 a -> !b 和 b -> !a;
二:對于OR
1,c == 1時,則a和b至少一個為真,建邊!a -> b 和 !b -> a;
2,c == 0時,則a和b全為假,建邊a -> !a 和 b -> !b;
三:對于XOD
1,c == 1時,則a和b不同,建邊!a -> b 、!b -> a、a -> !b 、 b -> !a;
2,c == 0時,則a和b相同,建邊a -> b 、b -> a、!a -> !b 、 !b -> !a;
建好圖,tarjan求SCC 判斷是否矛盾即可。
總結
以上是生活随笔為你收集整理的图论--2-SAT--poj 3678-Katu Puzzle(模板题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: u盘买32g还是64g
- 下一篇: 图论--2-SAT--暴力染色法模板(字