模板:强连通分量&2-sat

Posted 既然选择了远方,便只顾风雨兼程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板:强连通分量&2-sat相关的知识,希望对你有一定的参考价值。

 1 void Tarjan(int x){
 2     low[x]=ID[x]=++tot;
 3     st[++top]=x;Inst[x]=true;
 4     for(int i=fir[x];i;i=nxt[i])
 5         if(!ID[to[i]]){
 6             Tarjan(to[i]);
 7             low[x]=min(low[x],low[to[i]]);
 8         }
 9         else if(Inst[to[i]])
10             low[x]=min(low[x],ID[to[i]]);
11     if(low[x]==ID[x]){
12         ++scnt;
13         while(true){
14             int y=st[top--];
15             scc[y]=scnt;
16             Inst[y]=false;
17             if(x==y)break;
18         }        
19     }
20 }
21 
22 bool Check(){
23     for(int i=0;i<n*2;i++)
24         if(!ID[i])Tarjan(i);
25     for(int i=0;i<n;i++)
26         if(scc[i*2]==scc[i*2+1])
27             return false;
28     return true;            
29 }

 http://blog.csdn.net/qq_24451605/article/details/47126143

以上是关于模板:强连通分量&2-sat的主要内容,如果未能解决你的问题,请参考以下文章

P2341 [HAOI2006]受欢迎的牛|模板强连通分量(tarjan)

强连通分量tarjan模板复习

模板强连通分量和tarjan算法

强连通分量算法模板

tarjan强连通分量缩点模板

tarjan算法——强连通分量