双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即可!
版权声明:本文为博主原创文章,未经博主允许不得转载。

Tarjan(无向图)有向图缩环/求(边双)强连通分量

例题 直接考虑spfa的话要存状态(每个点只能拿一次),这样压根没办法显然走到一个环里就可以把这个环全部拿掉,这样的话我们将有向图变为有向无环图,就可以spfa了。 那么问题来了,怎么缩环。Tar...
  • jokerwyt
  • jokerwyt
  • 2016年09月12日 19:15
  • 1083

poj2186——双dfs求强连通分量

挑战程序设计原题。 感觉这个方法容易理解。 第一次dfs,先用一个时间戳来标记一下(时间戳就是寻访完这个店结束的时间),不是遍历的时间, 我们可以保证的是 最开始的点 时间戳最大。 然后 根据...
  • qq_35781950
  • qq_35781950
  • 2017年04月27日 16:18
  • 182

对于Tarjan强连通分量算法的理解

对于Tarjan强连通分量算法的理解
  • Goseqh
  • Goseqh
  • 2017年02月22日 12:39
  • 983

强连通分量的简单概括

简介对于强连通分量,是只懂得原理,但不知道如何用算法实现求解。今天就对强连通分量的算法进行一个整理,也对强连通分量的实例进行分析。强连通分量强连通分量出现在有向有环图中,每一个连通的分量都可以被当作是...
  • humanleelxy
  • humanleelxy
  • 2018年01月06日 12:25
  • 45

Tarjan算法求强连通分量总结

Tarjan算法求强连通分量总结 首先明确强连通分量的概念:如果图中的任意两个点都能互相到达,则为强连通分量。极大强连通分量:不被其它任何强连通分量包含的强连通分量。 强连通分量主要与两种边有关:...
  • MrH929
  • MrH929
  • 2016年07月18日 19:12
  • 499

【图论】割边与桥,双连通分量与强连通分量

割点与桥 割点:如果去掉一个点以及与它相关的边,使得整个图的连通分支数增加,那么这个点就是一个割点。 桥:如果去掉一条边,使得整个图的连通分支数增加,那么这条边就是一座桥。 tarjan...
  • Hemk340200600
  • Hemk340200600
  • 2017年03月25日 22:00
  • 278

求有向图强连通分量个数

强连通图(Strongly Connected Graph)是指一个有向图(Directed Graph)中任意两点v1、v2间存在v1到v2的路径(path)及v2到v1的路径的图。 在一个tu...
  • thy0311
  • thy0311
  • 2014年11月03日 15:39
  • 1380

[ACM] POJ 2186 Popular Cows (强连通分量,Kosaraju算法知识整理)

首先是一些知识整理:来源于网络: 以下转载于:http://blog.sina.com.cn/s/blog_4dff87120100r58c.html   Kosaraju算法是求解有向图强...
  • sr19930829
  • sr19930829
  • 2014年09月25日 16:10
  • 1952

Tarjan求有向图的强连通分量(Tarjan算法描述)

强连通分量是有向图中的概念,我们先说强连通分量的定义吧:在一个图的子图中,任意两个点相互可达,也就是存在互通的路径,那么这个子图就是强连通分量(或者称为强连通分支)。如果一个有向图的任意两个点相互可达...
  • geniusluzh
  • geniusluzh
  • 2011年07月12日 23:18
  • 4291

强连通分量之tarjan算法

强连通分量问题通常可归纳为要求出强连通分量,然后通过缩点(将得出的每个连通分量视为一个点,然后继续构图,例如连通分量A有一个点有一条边指向连通分量B的一个点,那么在A上搭一条边到B,其他连通分量也以此...
  • HuangLianzheng
  • HuangLianzheng
  • 2010年07月22日 16:18
  • 8063
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:双DFS求强连通分量
举报原因:
原因补充:

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