首页 文章

使用BFSVisitor在连接的组件中传播值? (Boost,C)?

提问于
浏览
0

我正在构建一个提升图 . 对于图中的每个连通组件,我想为该连接组件中的每个顶点传播唯一的ID值 . 我想知道是否有办法使用 BoostBFSVisitor 概念?

我猜这可以使用 examine_edge 函数(http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/BFSVisitor.html)完成,但我很难搞清楚实现这样的类 . 任何见解/链接到示例都会有很大帮助!

1 回答

  • 1

    听起来你只想实现一个自定义的BFS访问者 . 这已被回答here .

    特别是在您的discover_vertex方法中 . 你可以使用:

    void discover_vertex(const graph_t::vertex_descriptor &s, const graph_t &g) const {
      std::cout << "Discover: " << g[s] << std::endl;
      g[s].component_id = myNewId;
    }
    

    或者您可以使用属性映射 .

    put(component_id,s,myNewId);
    

    只要你将它作为顶点属性 . 您还可以向BFS访问者构造函数添加一个变量,该变量是您希望顶点具有的新ID .

    Here是一个示例自定义DFS将变量传递给构造函数 . 它与BFS的原理相同 .

相关问题