poj 3207(2-SAT)
2017-09-15 12:16
211 查看
传送门
题解:本人第一道2-SAT,但是好像还不包括2-SAT所有操作,只判了可行性。对于每一对点有两个选择:从圆内连和从圆外连。限制:连线不能相交,相交的只选一个即可(判断位置关系自己yy吧很简单的)。
题解:本人第一道2-SAT,但是好像还不包括2-SAT所有操作,只判了可行性。对于每一对点有两个选择:从圆内连和从圆外连。限制:连线不能相交,相交的只选一个即可(判断位置关系自己yy吧很简单的)。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<stack> using namespace std; const int MAXN=1004; int n,m; int head[MAXN],edge=0,low[MAXN],dfn[MAXN],bel[MAXN],tim=0,snt=0; struct EDGE { int v,nxt; }e[MAXN*MAXN]; bool ins[MAXN],f=true; int x[MAXN>>1],y[MAXN>>1]; stack<int> S; inline int read() { int x=0;char c=getchar(); while (c<'0'||c>'9') c=getchar(); while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar(); return x; } inline void adde(int u,int v) { e[edge].nxt=head[u],e[edge].v=v,head[u]=edge++; } void dfs(int p) { dfn[p]=low[p]=++tim; S.push(p),ins[p]=true; for (int i=head[p];~i;i=e[i].nxt) { int v=e[i].v; if (!dfn[v]) { dfs(v); low[p]=min(low[p],low[v]); } else if (ins[v]) low[p]=min(low[p],dfn[v]); } if (dfn[p]==low[p]) { ++snt; while (true) { int t=S.top(); S.pop(); bel[t]=snt; ins[t]=false; if (t==p) break; } } } int main() { memset(head,-1,sizeof(head)); memset(dfn,0,sizeof(dfn)); memset(ins,false,sizeof(ins)); n=read(),m=read(); for (int i=1;i<=m;++i) { x[i]=read(),y[i]=read(); if (x[i]>y[i]) x[i]^=y[i]^=x[i]^=y[i]; } for (int i=1;i<m;++i) for (int j=i+1;j<=m;++j) if (x[i]>x[j]&&x[i]<y[j]&&y[i]>y[j]||x[j]>x[i]&&x[j]<y[i]&&y[j]>y[i]) { adde(i,j+m); adde(j+m,i); adde(i+m,j); adde(j,i+m); } for (int i=1;i<=(m<<1);++i) if (!dfn[i]) dfs(i); for (int i=1;i<=m;++i) if (bel[i]==bel[i+m]) f=false; puts(f?"panda is telling the truth...":"the evil panda is lying again"); return 0; }
相关文章推荐
- POJ 3207 Ikki's Story IV - Panda's Trick (2-SAT)
- 2-sat 问题学习小记 Poj 3207 Ikki's Story IV - Panda's Trick (可行性判定)
- POJ 3207 Ikki's Story IV - Panda's Trick 2-SAT
- POJ-3207(2-SAT)
- POJ 3207 Ikki's Story IV - Panda's Trick(2-SAT)
- POJ 3207 2-sat
- [2-SAT] poj 3207 Ikki's Story IV - Panda's Trick
- POJ 3207 Ikki's Story IV - Panda's Trick(2-sat)
- poj 3207 Ikki's Story IV - Panda's Trick#2-sat
- poj 3207 2-sat
- POJ 3207 2-sat
- POJ 3207 2-SAT
- poj 3207 2-SAT(圆周点连边不相交)
- POJ 3207 Ikki's Story IV - Panda's Trick 2-SAT
- poj 3207 Ikki's Story IV - Panda's Trick(2-sat)
- POJ 3207 Ikki's Story IV - Panda's Trick (2-SAT)
- POJ 3207 Ikki's Story IV - Panda's Trick(2-SAT判断)
- poj 3207 Ikki's Story 2-SAT
- POJ 3207 Ikki's Story IV(2-SAT)
- poj 3207(2-sat判断)