題目大意:有$n$個點,每個點可以選或不選,有$m$組約束,形如$a,u,b,v$,表示$u=a,v=b$中至少要滿足乙個條件,問是否存在一組解,多組詢問
題解:$2-sat$,感覺是板子題呀,最後判斷一下每乙個點選與不選是否在同乙個強連通分量內即可
卡點:無
c++ code:
#include #include #include #define maxn 210#define maxm 2010
int head[maxn], cnt;
struct edge e[maxm];
inline void addedge(int a, int b) ; head[a] = cnt;
}int tim, n, m, nn;
inline int getpos(int a, int b)
inline void addedge(bool a, int b, bool c, int d)
int dfn[maxn], low[maxn], idx;
int s[maxn], top, bel[maxn], scc;
bool ins[maxn];
void tarjan(int u) else if (ins[v]) low[u] = std::min(low[u], dfn[v]);
} if (dfn[u] == low[u]) while (v != u); }}
int main()
for (int i = 1; i <= nn; ++i) if (!dfn[i]) tarjan(i);
bool solution = true;
for (int i = 1; i <= n; ++i) if (bel[i] == bel[i + n])
// for (int i = 1; i <= n; ++i) printf("%d: %d %d\n", i, bel[i], bel[n + i]);
std::cout << (solution ? "good" : "bad") << '\n';
if (tim)
} return 0;
}
洛谷P4171 JSOI2010 滿漢全席
滿漢全席是中國最豐盛的宴客菜餚,有許多種 同的材 透過滿族或是漢族的 方式,呈現在 繁多的菜色之中。由於菜色眾多而繁雜,只有極少 博學多聞技藝高超的廚師能夠做出滿漢全席,而能夠烹飪出經過專家認證的滿漢全席,也是中國廚師最大的榮譽之一。世界滿漢全席協會是由能夠 滿漢全席的專家廚師們所組成,而他們之間還...
P4171 JSOI2010 滿漢全席
傳送門 顯然的 2 sat 問題,甚至不用輸出方案 每種菜不是漢式就是滿式,分成兩個節點 i,n i 分別表示滿式和漢式 對於限制 m i,m j 如果 i 為漢式則 j 一定要為滿式,如果 j 為漢式 i 一定為滿式 所以連邊 n i,j n j,i 其他情況同理,最後 tarjan 縮一下聯通塊...
題解 P4171 JSOI2010 滿漢全席
這道題目是一道很明顯的2 sat問題,但要注意變數是每個材料,值是蒙式或漢式,而不是 蒙式xx為1或漢式xx為1 目測沒有必要用tarjan,畢竟理論時間複雜度一樣,常數需要時卡一卡就行了。include include include includeusing namespace std cons...