关闭

双DFS求强连通分量

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:64778次
    • 积分:1788
    • 等级:
    • 排名:千里之外
    • 原创:93篇
    • 转载:84篇
    • 译文:0篇
    • 评论:14条
    最新评论