C ++ Boost图库:构建无向图搜索中访问的顶点向量?

时间:2012-04-17 11:02:15

标签: c++ boost depth-first-search boost-graph

从我可以收集到的如何使用BGL以便从已知的根节点调用图的DFS我需要做的事情

class MyVisitor : public boost::default_dfs_visitor
{
  public:
  void discover_vertex(MyVertex v, const MyGraph& g) const
 {
    cerr << v << endl;
    return;
 }

};


 void bfsMethod(Graph g, int rootNodeId)
 {

   boost::undirected_dfs(g, vertex(rootNodeId,g), boost::visitor(vis)); 

 }

现在我不确定如何修改这个以便{D}访问图中所有顶点的方式构建std::vector vertexId(或指针),其方式与最小生成树算法的使用方式类似例如

std::vector < JPEdge > spanning_tree;
kruskal_minimum_spanning_tree(g, std::back_inserter(spanning_tree));

1 个答案:

答案 0 :(得分:1)

向量必须是访问者的成员。在discover_vertex函数中,只需将已发现的元素推送到向量中。

class MyVisitor : public boost::default_dfs_visitor
{
  public:
  void discover_vertex(MyVertex v, const MyGraph& g) const
 {
    cerr << v << endl;
    vv.push_back(v);
    return;
 }

  vector<MyVertex> GetVector() const {return vv; }

 private: 
 vector<MyVertex> vv;

};

void bfsMethod(Graph g, int rootNodeId)
{
  MyVisitor vis;
  boost::undirected_dfs(g, vertex(rootNodeId,g), vis); 
  vector<MyVertex> vctr = vis.GetVector();

 }