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