拓扑 && 模板Kosaraju算法

Posted luv_letters

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拓扑 && 模板Kosaraju算法相关的知识,希望对你有一定的参考价值。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=1000;
 4 vector <int> g1[maxn],g2[maxn];
 5 stack <int> s;
 6 int vis[maxn],sccno[maxn],cnt;
 7 void dfs1(int u){
 8     if(vis[u]) return ;
 9     vis[u]=1;
10     for(int i=0;i<g1[u].size();i++)
11         dfs1(g1[u][i]);
12     s.push(u);
13 }
14 
15 void dfs2(int u){
16     if(sccno[u]) return ;
17     sccno[u]=cnt;
18     for(int i=0;i<=g2[u].size();i++)
19         dfs2(g2[u][i]);
20 }
21 
22 void KK(int n){
23     cnt=0;
24     while (!s.empty()) s.pop();
25     memset(sccno,0, sizeof(sccno));
26     memset(vis,  0, sizeof(vis));
27     for(int i=0;i<n;i++){
28         dfs1(i);
29     }
30     while(!s.empty()){
31         if(!sccno[s.top()]){
32             cnt++;
33             dfs2(s.top());
34         }
35         s.pop();
36     }
37 }
38 int main(){
39     
40     return 0;
41 }

 

以上是关于拓扑 && 模板Kosaraju算法的主要内容,如果未能解决你的问题,请参考以下文章

基本算置顶各大算法&&数据结构模板

OSPF & BGP

强联通分量之kosaraju算法

POJ 2186 Popular cows(Kosaraju+强联通分量模板)

每日算法图算法(遍历&MST&最短路径&拓扑排序)

HDU 1285--确定比赛名次拓扑排序 &amp;&amp; 邻接表实现