POJ3648 2SAT解的求得

2021-06-08 04:09:20 字數 974 閱讀 5404

#include #include #include #include #include #include using namespace std;

const int nn = 100;

const int mm = 1000;

struct twosat

void addedge(int u, int v)

void tarjan(int u) else if (ins[v])

}if (low[u] == dfn[u]) while (v != u);

}} bool check()

for (int i = 0; i < 2 * n; i++) if (dfn[i] == -1) tarjan(i);

for (int i = 0; i < 2 * n; i += 2) if (belong[i] == belong[i ^ 1]) return false;

return true;

} vectorsolve()

for (int i = 0; i < 2 * n; i += 2)

for (int i = 0; i < en; i++)

queueq;

for (int i = 0; i< bcnt; i++)

while (!q.empty())

for (int i = 0; i<(int)e[u].size(); i++)

}vectorans; // 返回值為vector, 恩, 可能不是很好, 自行更改相容

for (int i = 1; i < 2 * n; i += 2)

return ans;

}} t;

int main()

if (!t.check()) printf("bad luck\n");

else }}

return 0;

}

POJ3648 2 sat強連通縮點法

題意 有一對新人結婚,邀請n對夫婦去參加婚禮。有一張很長的桌子,人只能坐在桌子的兩邊,還要滿足下面的要求 1.每對夫婦不能坐在同一側 2.n對夫婦之中可能有通姦關係 包括男男,男女,有通姦關係的不能同時坐在新娘的對面,可以分開坐,可以同時坐在新娘這一側。如果存在一種可行的方案,輸出與新娘同側的人。解...

poj2723 2sat判斷解 二分

典型的2 sat問題,題意 有m個門,每個門上倆把鎖,開啟其中一把即可,現在給n對鑰匙 所有 鑰匙編號0123456.2n 1 每對鑰匙只能用一把,要求盡可能開門多 按順序,前max個 關鍵是題意的分析與轉化,只能選一?必然2 sat,每給一對門上的鎖對應鑰匙的編號,說 必需要這 倆把鑰匙的一把 至...

求方程的解

題目描述 求ax2 bx c 0方程的實根。a,b,c由鍵盤輸入.解方程要考慮係數a等於零的情況,且解x1 x2必須是float型。a等於零有兩種情況 b 0,b 0 a不等於零有三種情況 delta 0 0 0 先計算得到x1 x2,再printf輸出 輸入輸入三個數a,b,c 輸出輸出方程的實根...