Boost logo

Boost Users :

From: Gustavo S˙ffffe1nchez (gustsanc_at_[hidden])
Date: 2004-07-20 08:36:21

hello all,
we are trying to use a DFS visitor in a similar way as the BFS visitor which is used in the example "bfs.cpp" (boost 1.31.0), that is the code, but it complains about a lot of errors in the internal boost library files...

#include <boost/config.hpp>

#include <assert.h>


#include <vector>

#include <algorithm>

#include <utility>

#include <iostream>

#include <boost/graph/adjacency_list.hpp>

#include <boost/graph/depth_first_search.hpp>

#include <boost/graph/visitors.hpp>

#include <boost/property_map.hpp>

#include <boost/graph/graph_utility.hpp>


using namespace boost;

using namespace std;




// visitor que muestra el orden en que se encuentran los arcos

template <class NewGraph, class Tag>

struct muestra_orden

: public boost::base_visitor<muestra_orden<NewGraph, Tag> >


typedef Tag event_filter;

muestra_orden(NewGraph& graph) : new_g(graph) { }

template <class Edge, class Graph>

void operator()(Edge e, Graph& g) {

cout << "arco: " << e << endl;



NewGraph& new_g;


template <class NewGraph, class Tag>

inline muestra_orden<NewGraph, Tag>

MuestraOrden(NewGraph& g, Tag) {

return muestra_orden<NewGraph, Tag>(g);



template <class NewGraph, class Tag>

struct muestra_ordenV

: public boost::base_visitor<muestra_ordenV<NewGraph, Tag> >


typedef Tag event_filter;

muestra_ordenV(NewGraph& graph) : new_g(graph) { }

template <class Vertex, class Graph>

void operator()(Vertex v, Graph& g) {

cout << "ARCO: " << v << endl;



NewGraph& new_g;


template <class NewGraph, class Tag>

inline muestra_ordenV<NewGraph, Tag>

MuestraOrdenV(NewGraph& g, Tag) {

return muestra_ordenV<NewGraph, Tag>(g);



int main(int , char* [])


using namespace boost;

typedef boost::adjacency_list<

boost::mapS, boost::vecS, boost::undirectedS,

boost::property<boost::vertex_color_t, boost::default_color_type,

boost::property<boost::vertex_degree_t, int,

boost::property<boost::vertex_in_degree_t, int,

boost::property<boost::vertex_out_degree_t, int> > > >

> Graph;

Graph G(11);

boost::add_edge(5, 6, G);

boost::add_edge(0, 1, G); // 0 es el +

boost::add_edge(1, 2, G);

boost::add_edge(1, 3, G);

boost::add_edge(2, 4, G);

boost::add_edge(3, 5, G);

boost::add_edge(4, 6, G);

boost::add_edge(5, 7, G); // 7 es el -

boost::add_edge(5, 10, G);

boost::add_edge(10, 11, G);

boost::add_edge(11, 12, G);

typedef graph_traits<Graph>::vertex_descriptor Vertex;

typedef graph_traits<Graph>::vertices_size_type size_type;

Graph G_copy(11);

size_type d[11];

std::vector<Vertex> p(num_vertices(G));


Vertex s=7;


boost::depth_first_search (G,




MuestraOrden(G_copy, boost::on_tree_edge())))) ),

s); // we can compile the visitor(...) clause alone, but not inside depth_first_search (...) clause.

return 0;



thanks a lot



 [input] [input] [input]

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at