我需要使用dfs在有向图中找到最长的循环。
我曾经在维基百科上看到一篇文章,描述了这种方式,我认为它解决了这个问题,比如用三种状态之一标记节点:node not been visited,finished search the node,and node visited,but not been finished visited.
如果有人能和我分享这个链接,我将不胜感激。顺便说一下,这不是Tarjan的算法。
下面的问题是我想解决的,以防你想知道。
第一行中给出的两个数字是n和m,每个数字代表节点数和有向边数。
从第二行给出m组两位数字a和b,这意味着节点a和节点b是连接的,但是您只能从a到b遍历节点。
input.txt文件:
7 9
1 2
2 3
3 1
3 4
4 5
5 1
5 6
6 7
7 2
这个例子的答案是6,因为2>3>4>5>6>7>2。
最佳答案
我认为最长的基本周期(或电路)比最长的周期更好的术语。
无论如何,这个pdf可能会有帮助:Finding All the Elementary Circuits of a Directed Graph
这个有一年历史的stackoverflow问题也有许多相关问题和算法的链接:
Finding all cycles in a directed graph
关于algorithm - 使用DFS在有向图中找到最长的周期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4530120/