国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

[BZOJ2199][Usaco2011 Jan][2-SAT]奶牛議會(huì)

2019-11-11 05:50:22
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

分享一篇不錯(cuò)的2-sat介紹博客

2-SAT可以用來(lái)判斷給出的限制能不能全滿足。 那么枚舉每個(gè)議案,用2-SAT分別判斷當(dāng)這個(gè)議案通過和否決時(shí)有沒有解。 在判斷的時(shí)候因?yàn)橐呀?jīng)知道的當(dāng)前議案的通過情況,只用從對(duì)應(yīng)的點(diǎn)dfs出去,標(biāo)記路徑上的點(diǎn),最后判定有沒有矛盾。

#include <cstdio>#include <cstring>#include <string>#include <iostream>#define N 2010#define M 8010using namespace std;int n,m,x,y,cnt;int G[N],V[N];char a,b,Ans[N];struct edge{ int t,nx;}E[M];inline void reaD(int &x){ char Ch=getchar();x=0; for(;Ch>'9'||Ch<'0';Ch=getchar()); for(;Ch>='0'&&Ch<='9';x=x*10+Ch-'0',Ch=getchar());}inline void reaD(char &x){ while((x=getchar())!='Y'&&x!='N');}void InserT(int x,int y){ E[++cnt].t=y;E[cnt].nx=G[x];G[x]=cnt;}void dfs(int x){ V[x]=1; for(int i=G[x];i;i=E[i].nx) if(!V[E[i].t]) dfs(E[i].t);}int check(int x){ memset(V,0,sizeof(V)); dfs(x); for(int i=1;i<=n;i++) if(V[i<<1]&&V[i<<1|1]) return 0; return 1;}int main(){ reaD(n);reaD(m); for(int i=1;i<=m;i++){ reaD(x);reaD(a);reaD(y);reaD(b); if(a=='Y') x=x<<1|1; else x=x<<1; if(b=='Y') y=y<<1|1; else y=y<<1; InserT(x,y^1);InserT(y,x^1); } for(int i=1;i<=n;i++){ int yes=check(i<<1),no=check(i<<1|1); if(yes&&no) Ans[i]='?'; else if(!yes&&!no) {puts("IMPOSSIBLE");return 0;} else if(yes) Ans[i]='Y'; else Ans[i]='N'; } return puts(Ans+1),0;}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 和硕县| 郎溪县| 施秉县| 南昌市| 长治市| 南溪县| 高碑店市| 五寨县| 珠海市| 凤城市| 遵义县| 新晃| 临猗县| 湘乡市| 麻栗坡县| 新野县| SHOW| 英吉沙县| 镇赉县| 柳河县| 横峰县| 汨罗市| 正蓝旗| 辰溪县| 郴州市| 东明县| 惠水县| 蒙山县| 龙井市| 高碑店市| 景泰县| 上林县| 昭苏县| 台中市| 聊城市| 容城县| 永登县| 通榆县| 逊克县| 封丘县| 孟州市|