如何创建一个C ++ Boost无向图并以深度优先搜索(DFS)顺序遍历它? [英] How to create a C++ Boost undirected graph and traverse it in depth first search (DFS) order?

查看:437
本文介绍了如何创建一个C ++ Boost无向图并以深度优先搜索(DFS)顺序遍历它?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何创建C ++ Boost无向图并以深度优先搜索(DFS)顺序遍历它?

How to create a C++ Boost undirected graph and traverse it in depth first search (DFS) order?

推荐答案

// Boost DFS example on an undirected graph.
// Create a sample graph, traverse its nodes
// in DFS order and print out their values.

#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/depth_first_search.hpp>
#include <iostream>
using namespace std;

typedef boost::adjacency_list<boost::listS, boost::vecS, boost::undirectedS> MyGraph;
typedef boost::graph_traits<MyGraph>::vertex_descriptor MyVertex;

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

int main()
{
  MyGraph g;
  boost::add_edge(0, 1, g);
  boost::add_edge(0, 2, g);
  boost::add_edge(1, 2, g);
  boost::add_edge(1, 3, g);

  MyVisitor vis;
  boost::depth_first_search(g, boost::visitor(vis));

  return 0;
}

这篇关于如何创建一个C ++ Boost无向图并以深度优先搜索(DFS)顺序遍历它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆