C++ Boost图形库:指定DFS的根节点

3

在有向图上使用标准方法

std::vector<size_type> dtime(N);
std::vector<size_type> ftime(N);
size_type t = 0;
dfs_time_visitor<size_type*> vis(&dtime[0], &ftime[0], t);
depth_first_search(graph, visitor(vis));

看起来该算法始终从节点0开始进行深度优先搜索。

如何告诉算法从已知的“根节点”开始呢?


第一个错误信息显示 g 未定义。g 是什么? - Nate Kohl
我的错。是几行代码之前的问题,与其他事情有关。 - oracle3001
1个回答

9

这里可以找到所有与depth_first_search相关的重载函数列表。你需要的是"命名参数版本"。你需要使用的参数是"root_vertex",你只需要调用以下代码即可:

depth_first_search(graph, visitor(vis).root_vertex(root_vertex_descriptor));

刚试了一下,出现了编译错误...已经编辑了原帖以反映这一点。 - oracle3001
抱歉,各位,但是出了故障。在这个函数调用上面,我有几行代码与其他内容相关。感谢您的帮助,非常感激。我发现Boost Graph的参考资料真的很难理解/找到我要找的东西,并且很少有不仅仅是运行非常基本调用的示例。如果犯了错误,还会出现似乎无法阅读的编译器错误。 - oracle3001
dfs_time_visitor和常规的dfs_visitor之间有什么区别? - ARH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接