洛谷P4171 JSOI2010 滿漢全席

2022-05-23 21:54:09 字數 1155 閱讀 2160

題目大意:有$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...