#p4782. 【模板】2-SAT

    ID: 3665 Type: Default 1000ms 256MiB Tried: 8 Accepted: 1 Difficulty: 5 Uploaded By: Tags>2-SATTarjan强连通分量图论模板

【模板】2-SAT

题目描述

有 nn 个布尔变量 x1∼xnx_1 \sim x_n,另有 mm 个需要满足的条件,每个条件的形式都是 「xix_i 为 true / false 或 xjx_j 为 true / false」。

比如 「x1x_1 为真或 x3x_3 为假」、「x7x_7 为假或 x2x_2 为假」。

2-SAT 问题的目标是给每个变量赋值使得所有条件得到满足。

输入格式

第一行两个整数 nn 和 mm,意义如题面所述。

接下来 mm 行每行 44 个整数 ii、aa、jj、bb,表示「xix_i 为 aa 或 xjx_j 为 bb」(a,b∈{0,1}a, b \in \{0, 1\})。

输出格式

如无解,输出 IMPOSSIBLE;

否则输出 POSSIBLE,下一行 nn 个整数 x1∼xnx_1 \sim x_n(xi∈{0,1}x_i \in \{0, 1\}),表示构造出的解。

输入示例 1

3 1
1 1 3 0

输出示例 1

POSSIBLE
1 0 0

示例 1 说明

条件为「x1x_1 为真 或 x3x_3 为假」,输出的赋值 x1=1,x2=0,x3=0x_1=1, x_2=0, x_3=0 满足该条件。

如果输出 1 1 1 或 0 0 0 等其它合法方案,也会被判定为正确(本题使用 Special Judge)。

输入示例 2

2 4
1 1 2 1
1 0 2 0
1 0 2 1
1 1 2 0

输出示例 2

IMPOSSIBLE

示例 2 说明

四个条件穷举了 x1,x2x_1, x_2 的所有 44 种取值组合中应有的情况,但两两矛盾,无可行解。

约束条件

  • 1≤n,m≤1061 \le n, m \le 10^6
  • 1≤i,j≤n1 \le i, j \le n
  • a,b∈{0,1}a, b \in \{0, 1\}
  • 所有输入值均为整数

提示

  • 答案不唯一时,输出任意合法解均被接受(Special Judge)。
  • 注意数据规模较大,建议使用快速读入。