标签:
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
标签:
原文地址:http://www.cnblogs.com/TenderRun/p/5634186.html