1 //=======================================================================
2 // Copyright 2002 Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee,
4 // Distributed under the Boost Software License, Version 1.0. (See
5 // accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
7 //=======================================================================
10 #include <boost/graph/adjacency_list.hpp>
11 #include <boost/graph/undirected_dfs.hpp>
12 #include <boost/cstdlib.hpp>
16 Example graph from Tarjei Knapstad.
31 std::string name
[] = { "C0", "C1", "C2", "C3", "C4", "C5", "C6", "O7",
32 "H8", "H9", "H10", "H11", "H12", "H13", "H14", "H15"};
35 struct detect_loops
: public boost::dfs_visitor
<>
37 template <class Edge
, class Graph
>
38 void back_edge(Edge e
, const Graph
& g
) {
39 std::cout
<< name
[source(e
, g
)]
41 << name
[target(e
, g
)] << "\n";
45 int main(int, char*[])
47 using namespace boost
;
48 typedef adjacency_list
< vecS
, vecS
, undirectedS
,
50 property
<edge_color_t
, default_color_type
> > graph_t
;
51 typedef graph_traits
<graph_t
>::vertex_descriptor vertex_t
;
53 const std::size_t N
= sizeof(name
)/sizeof(std::string
);
73 std::cout
<< "back edges:\n";
75 undirected_dfs(g
, root_vertex(vertex_t(0)).visitor(vis
)
76 .edge_color_map(get(edge_color
, g
)));
77 std::cout
<< std::endl
;
79 return boost::exit_success
;