当前位置:   article > 正文

有向图环路_有向图中找到所有环

有向图中找到所有环

华为的笔试题里出现了找出有向图环路的问题(最多只有一个环),这里记录一下解法:

使用两个数组 visited 和 onpath,visited数组记录当前节点是否被访问过,onpath数组某个节点是否在搜索路径上。再使用一个栈,记录当前的搜索路径。对于节点k,如果它不在搜索路径上,对它的所有邻接点dfs,并标记 visited[k] = true, onpath[k] = true, stack.push(k);如果如果它也在搜索路径上(在栈里),那么栈中从k到栈顶的所有节点,组成了一个环,于是就找到了这个环路。对k的所有邻接点遍历完成后,onpath[k] = false,并将k出栈。对所有没有被标记visited的节点都执行此操作,即可找出所有环路。

问题和代码如下:

有向图寻找环路

题目描述
给定一个有向图,假定最多10个节点,节点编号依次为A~J,如果A节点到B节点之间有通路则描述为A->B,多条边的描述之间以分号隔开,给定一个有向图,求该有向图中的所有环路,环路以节点编号的最小的节点开始输出,假定一个有向图最多一个环路,如果没有环路则输出空字符串“-”。输入为连接链表。
输入描述:
输入为连接链表字符串,如 :A->B;B->D;C->B;C->E;D->C

输出描述:
环路节点组成的字符串,如:输出字符串BDC,标识B->D->C->B组成环路
示例1输入输出示例仅供调试,后台判题数据一般不包含示例
输入</

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/64551
推荐阅读
相关标签
  

闽ICP备14008679号