双DFS求强连通分量

原创 2015年07月07日 20:43:43
用双DFS实现强连通分量是3个方法中比较好理解的。注意事项:1.读入文件时,我用的是fstream,流的方式读入!2.如果是数据集中没有别的多余符号,可以直接读入。若是由逗号等符号分隔开,我用的是CString中的readstring来按行读入,需引入头文件.在按行截取,用到find()函数,TrimLeft()和TrimRight()函数!3.按行读入数据后建立正反两个邻接表!按头插法建立效率更高些!4.建立一个Graph类和Readfile类,其中Graph类中包含图的各种信息。Readfile类中有读文件的方法,使得调用这个方法后会产生一个Graph类对象,包含数据集的所有信息,即调用这个函数后我们把数据集转换成了一个Graph对象!5.其中一个较难点是输出结点的出栈顺序,我用了一个time变量的引用来记录每个结点的出栈时间!具体代码如下:这是读文件的代码,结果是产生一个图对象!这是第一次深度优先遍历,用&time来记录每个顶点的出栈时间:这是第二次深度优先遍历,输出各个强连通分量按行隔开!这是主程序,通过调用读文件函数生成一个图对象,在这个对象上分别进行两次DFS即可!
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

求强连通分量的双DFS,Tarjan和Gobow算法详解

1.强连通分量-----双DFS算法 思想:对一个有向图作两遍DFS,第一遍DFS能确定图中每个顶点的DFS完成时间,第二遍DFS从第一遍DFS完成时间的逆序开始遍历,这时得到的一棵棵深度优先搜索树就...

强连通分量的三种算法分析

本文将介绍什么是强连通分量,求解强连通分量的三种算法Kosaraju算法、Tarjan算法、Garbow算法。因为算法的过程很容易理解,真正难的是如何理解算法的思想,写主这个的时候我也不定完全明白算法...

求解强连通分量算法之---Kosaraju算法

本文提纲: 问题描述 Kosaraju 算法 问题描述: 什么是强连通分量(StronglyConnected Component)(或者,被称为强连通子图,S...

求强连通分量的双DFS,Tarjan和Gobow算法详解

1.强连通分量-----双DFS算法思想:对一个有向图作两遍DFS,第一遍DFS能确定图中每个顶点的DFS完成时间,第二遍DFS从第一遍DFS完成时间的逆序开始遍历。 思想:对一个有向图作两...

用DFS和BFS求连通分量(邻接表的实现与应用)

深度优先搜索求连通分量(邻接表的实现与应用) 本文内容改编自《挑战程序设计竞赛(第2弹)》12.5节 问题描述给出朋友关系,判断从指定人物出发能否通过双向朋友链抵达目标人物。 输入 第...

【算法】图论(一) —— 基本图算法(BFS/DFS/强连通分量)

基本图算法(图的表示/广度优先搜索/深度优先搜索/拓扑排序/强连通分量)

HDU 3639 Hawk-and-Chicken 强连通分量分解 + dfs

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3639 题意:大概意思是n个人投票,求获胜者得到多少票,并输出所有获胜者,其中支持关系是可以传递的,即a...

【BZOJ1179】【Apio2009】Atm 强连通分量缩点+拓扑DP/拓扑最长路 kosaraju+tarjan+dfs转非递归三种代码

kosaraju、tarjan、kosaraju dfs转非递归,三种代码。。。 可以有效对付卡系统栈的管理员。。。

poj 2186 Popular Cows(强连通分量缩点+dfs)

题目链接: 点击打开链接 题目大意: 给出一些牛,他们之间有崇拜关系,且这种关系具有传递性,问被所有其他牛崇拜的牛的个数 题目分析: 首先对于这个有向图,它的所有强连通分量中的点都是互相...

求连通分量

  • 2013-01-03 19:44
  • 42KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)