#include #include #include #include #include #include typedef std :: pair句。 //Properties of our graph. By default oriented graph typedef boost :: adjacency_list <>グラフ。 const int nb_vars = 5。 int var_to_node(int var){if(var <0)が返される(-var nb_vars);そうでなければvarを返します。 } int main(int argc、char ** argv){std :: vector句; clauses.push_back(clause(1,2)); clauses.push_back((2、-4)); clauses.push_back(節(1,4)); clauses.push_back((1,3)節); clauses.push_back((-2,4)); //変数の2倍のノードを持つグラフを作成します。Graph g(nb_vars * 2); //すべての辺を追加しましょうBOOST_FOREACH(節c、節){int v1 = c.first;} int v2 = c.second; boost :: add_edge(var_to_node(-v1)、var_to_node(v2)、g); boost :: add_edge(var_to_node(-v2)、var_to_node(v1)、g); } //すべてのノードは強連結成分に属しますstd :: vector成分(num_vertices(g)); std :: cout << strong_components(g、 //同じSCC boolに//否定を持つ変数があるかどうかを確認しましょう= true; (int i = 0; iの場合