我是图论的新手,最近一直在解决一些问题 . I was looking for a way to find the depth of every node in the graph . 这是我在纸上形式化的方式:
-
运行for循环迭代每个顶点
-
如果未访问顶点,请运行以该顶点作为源的DFS
-
在DFS中,只要我们有更多的顶点去,我们继续前进(如在深度优先搜索中),我们保留一个计数器,cnt1,每次递增
-
在递归DFS调用中回溯时,我们从最后一个顶点的当前计数开始初始化一个新计数器,并将值cnt1-cnt2给予每个顶点,然后继续减小cnt2 .
我不确定这是否正确,并且无法在代码中实现相同的功能 . 有什么建议?为了记录,我的图形以邻接列表的形式存储,形式为向量数组,如:
vector <int> a[100];
编辑:输入图是有向树的集合 . 我们为每个节点都有一个深度标签 - 表示从根到它的简单路径上的节点数 . 因此,我们需要找到每个节点的最大深度
1 回答
您可能会发现这些链接很有用:
http://www.geeksforgeeks.org/breadth-first-traversal-for-a-graph/
http://www.geeksforgeeks.org/depth-first-traversal-for-a-graph/
这里的类用于使用邻接列表表示来实现BFS / DFS . 就像这里使用的bool类型的“访问”数组一样......你还必须创建另一个数组'depth',你可以存储每个元素的深度而计算..然后输出该数组到底..