C++ 访问者提供从根到每个分支端的所有顶点路由

C++ 访问者提供从根到每个分支端的所有顶点路由,c++,boost,depth-first-search,boost-graph,visitor,C++,Boost,Depth First Search,Boost Graph,Visitor,我发现这是为了构建一个深度优先搜索的访问者,但我不确定如何构建一个符合我意图的访问者 我有一棵未称重的树。我想找到从根到每个分支末端的所有最短路径,一个只有一条边连接到图的其余部分的顶点 例如,在这张从别处借来的图表中 如果12是根,则分支末端将是4、1、9、10和7。第一条路线将包含12、11、5、2、4。第二条路线将包含12、11、5、2、1。等等 在提供的示例中 class MyVisitor : public boost::default_dfs_visitor { public:

我发现这是为了构建一个深度优先搜索的访问者,但我不确定如何构建一个符合我意图的访问者

我有一棵未称重的树。我想找到从根到每个分支末端的所有最短路径,一个只有一条边连接到图的其余部分的顶点

例如,在这张从别处借来的图表中

如果12是根,则分支末端将是4、1、9、10和7。第一条路线将包含12、11、5、2、4。第二条路线将包含12、11、5、2、1。等等

在提供的示例中

class MyVisitor : public boost::default_dfs_visitor
{
public:
  void discover_vertex(MyVertex v, const MyGraph& g) const
  {
    cerr << v << endl;
    return;
  }
};
我看不到一种方法来确定当前正在搜索哪个路由


如何实现我的意图?

如果要跟踪当前正在探索的路由顶点,可以在访问者中使用类似于Precedure_recorder的代码

可在此处找到有关预定义的前置\u记录器的详细信息:


事实上,您可能会更好地使用dijkstra_最短路径。该算法为您报告一个前置映射。你可以打电话给Dijkstra,然后简单地浏览之前的地图,为感兴趣的顶点生成感兴趣的路径。

对不起,我已经仔细阅读了这个问题,现在我一点也不懂。显然,您无法更改boost访问者界面。你的访客对象可能会跟踪路线。谢谢你的隐藏金块。我想我遗漏了一些基本的东西,因为我似乎无法从这些函数的输出中重建路径:我避免了Dijkstra,因为我使用的是捆绑属性,并且不知道如何应用权重。在我的例子中,权重都是相等的;这就是为什么不能从它们的输出中提取它。您可以使用Precedure_recorder解决这个问题,它将注册Precedure。要使用所有边权重都等于1的Dijkstra,请将“boost::dummy_property_map1”作为边权重映射传递给Dijkstra。