在有向图上使用标准,

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 开始 dfs。

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

最佳答案

Here 您可以找到 depth_first_search 的所有重载的列表。您需要的是“named parameter 版本”。您需要使用的参数是“root_vertex”,您对 depth_first_search 的调用就是:

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

关于C++ Boost 图库 :- Specifying Root Node for a DFS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11016441/

10-13 09:15