因爲一直不怎麼會這個東西,所以今天整理一下這個東西的內容。
原來這個東西這麼簡單的嗎。2sat裏面一條邊x->y表示x選了之後y必須選,只要建出滿足這種條件的邊之後跑tarjan就可以知道到底有沒有解了。因此x &^| y這種布爾運算就可以試一試 x在取某個值時y會不會強制取值,會的話就連邊就行了,然後tarjan一下,看一看 x和!x是否在同一個聯通塊裏,如果都沒有的話就說明有一組解。
容易證明2sat的連邊具有傳遞性。當圖的邊數過大時,可以考慮建立輔助點來優化建邊。
當你的圖已經建好並且要求構造方案的時候,x=id[x]