强连通分量——Kosaraju算法
来源:互联网 发布:买家的评价被淘宝删除 编辑:程序博客网 时间:2024/04/30 06:20
①随意选取一个结点开始深搜,当搜索完子树时将它压到栈中
②将原图转置(边的方向变成与原来相反),从栈顶节点再进行深搜,每次深搜结束所得的节点就是一个强连通分量
<span style="font-size:14px;">#include<stdio.h>#include<string.h>#include<stack>#include<vector>#include<iostream>#include<iomanip>using namespace std;vector<int> g[100],gt[100];bool visit[100];stack<int> a;void dfs(int v){ int i; visit[v]=false; for(i=0;i<g[v].size();i++) if(visit[g[v][i]]) dfs(g[v][i]); a.push(v);}void dfs2(int v){ int i; visit[v]=false; cout<<v<<" "; for(i=0;i<gt[v].size();i++) if(visit[gt[v][i]]) dfs2(gt[v][i]);}int main(){ int i,n,m,x,y; cin>>n>>m; for(i=1;i<=n;i++) { g[i].clear(); gt[i].clear(); } while(m--) { cin>>x>>y; g[x].push_back(y); gt[y].push_back(x); } memset(visit,true,sizeof(visit)); while(!a.empty()) a.pop(); for(i=1;i<=n;i++) if(visit[i]) dfs(i); memset(visit,true,sizeof(visit)); while(!a.empty()) { x=a.top(),a.pop(); if(visit[x]) { dfs2(x); cout<<endl; cout<<endl; } }}</span>
0 0
- 强连通分量——kosaraju算法
- 强连通分量——Kosaraju算法
- 求强连通分量——Tarjan、Kosaraju算法
- 强连通分量 Kosaraju算法
- 强连通分量 -- Kosaraju算法
- 强连通分量-kosaraju算法
- 强连通分量 Kosaraju算法
- 强连通分量(Kosaraju算法)
- 强连通分量算法Kosaraju 和 Tarjan
- 强连通分量的Kosaraju算法
- 强连通分量 的 Kosaraju算法
- Kosaraju算法---求解强连通分量
- POJ 2186 Kosaraju算法 强连通分量
- Kosaraju算法求解强连通分量
- 强连通分量Kosaraju算法实现
- 求强连通分量的三种算法——Kosaraju, Tarjan, Gabow
- 强连通分量(kosaraju)
- 求解强连通分量算法之---Kosaraju算法
- DIV 设置 display:inline-block 导致 DIV 对不齐的解决方法
- python多线程
- Linux硬盘分区满,但没有找到占用文件
- (二)使用JODConverter将office文档转换为pdf
- Linux监控面板linux-dash的安装过程
- 强连通分量——Kosaraju算法
- java中volatile关键字的解释
- VR晕眩原因及解决方法
- pyqt5+eric6 openfile
- 8086汇编语言 retf指令实例
- Expected BEGIN_OBJECT but was BEGIN_ARRARY at line 1 column 2 path$异常解决方法
- HPC-BeeGFS
- final
- solr增量索引问题