P4171 JSOI2010 滿漢全席

2022-05-19 08:34:43 字數 1128 閱讀 5054

傳送門

顯然的 $2-sat$ 問題,甚至不用輸出方案

每種菜不是漢式就是滿式,分成兩個節點 $i,n+i$ 分別表示滿式和漢式

對於限制 $m_i,m_j$,如果 $i$ 為漢式則 $j$ 一定要為滿式,如果 $j$ 為漢式 $i$ 一定為滿式

所以連邊 $(n+i,j),(n+j,i)$ 

其他情況同理,最後 $tarjan$ 縮一下聯通塊看看是否某乙個聯通塊同時包含 $i,n+i$ 即可

#include#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;inline

intread()

while(ch>='

0'&&ch<='

9')

return x*f;

}const

int n=1e5+7

;int

t,n,m;

int fir[n],from[n<<1],to[n<<1

],cntt;

inline

void add(int a,int b)

intdfn[n],low[n],bel[n],dfs_clock,cnt;

intst[n],top;

inline

void

clr()

void tarjan(int

x)

if(low[x]==dfn[x])

}int

main()

else

}bool gg=0; for(int i=1;i<=n*2;i++) if(!dfn[i]) tarjan(i);

for(int i=1;i<=n;i++) if(bel[i]==bel[n+i]) gg=1

;

if(gg) printf("

bad\n");

else printf("

good\n");

}return0;

}

題解 P4171 JSOI2010 滿漢全席

這道題目是一道很明顯的2 sat問題,但要注意變數是每個材料,值是蒙式或漢式,而不是 蒙式xx為1或漢式xx為1 目測沒有必要用tarjan,畢竟理論時間複雜度一樣,常數需要時卡一卡就行了。include include include includeusing namespace std cons...

洛谷P4171 JSOI2010 滿漢全席

題目大意 有 n 個點,每個點可以選或不選,有 m 組約束,形如 a,u,b,v 表示 u a,v b 中至少要滿足乙個條件,問是否存在一組解,多組詢問 題解 2 sat 感覺是板子題呀,最後判斷一下每乙個點選與不選是否在同乙個強連通分量內即可 卡點 無 c code include include...

洛谷P4171 JSOI2010 滿漢全席

滿漢全席是中國最豐盛的宴客菜餚,有許多種 同的材 透過滿族或是漢族的 方式,呈現在 繁多的菜色之中。由於菜色眾多而繁雜,只有極少 博學多聞技藝高超的廚師能夠做出滿漢全席,而能夠烹飪出經過專家認證的滿漢全席,也是中國廚師最大的榮譽之一。世界滿漢全席協會是由能夠 滿漢全席的專家廚師們所組成,而他們之間還...