int dfs(int u)
{
if(mark[u]) return 1;
if(mark[u^1]) return 0;
mark[u]=1;
S[top++]=u;
int i,v;
for(i=head[u];i!=-1;i=e[i].next)
{
v=e[i].v;
if(!dfs(v)) return 0;
}
return 1;
}
int judge()
{
int i;
memset(mark,0,sizeof(mark));
for(i=0;i<2*n;i++)
{
if(!mark[i*2]&&!mark[i*2+1])
{
top=0;
if(!dfs(i*2))
{
while(top>0) mark[S[--top]]=0;
if(!dfs(i*2+1)) return 0;
}
}
}
return 1;
}
2-SAT模板
最新推荐文章于 2021-08-15 21:28:10 发布