Solve 2-SAT
assigned variable
// Solve (x0 v x1) ^ (~x0 v x2) ^ (~x1 v ~x2) auto sat = TwoSat(3); sat.addClause(0, true, 1, true); // (vars[0] == true || vars[1] == true) sat.addClause(0, false, 2, true); // (vars[0] == false || vars[2] == true) sat.addClause(1, false, 2, false); // (vars[1] == false || vars[2] == false) assert(sat.solve() == true); auto vars = sat.vars; assert(vars[0] == true || vars[1] == true); assert(vars[0] == false || vars[2] == true); assert(vars[1] == false || vars[2] == false);
2-SAT Solver