GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — boost_graph/example/dag_shortest_paths.cpp at develop · stdgraph/boost_graph Expand file tree/ Copy pathdag_shortest_paths.cppMore file actions 76 lines (68 loc) · 2.23 KB / Copy pathdag_shortest_paths.cppFile metadata and controls76 lines (68 loc) · 2.23 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 //======================================================================= // Copyright 1997, 1998, 1999, 2000 University of Notre Dame. // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) //======================================================================= #include <boost/graph/dag_shortest_paths.hpp> #include <boost/graph/adjacency_list.hpp> #include <iostream> // Example from Introduction to Algorithms by Cormen, et all p.537. // Sample output: // r: inifinity // s: 0 // t: 2 // u: 6 // v: 5 // x: 3 int main() { using namespace boost; using graph_t = adjacency_list< vecS, vecS, directedS, property< vertex_distance_t, int >, property< edge_weight_t, int > >; graph_t g(6); enum verts { r, s, t, u, v, x }; char name[] = "rstuvx"; add_edge(r, s, 5, g); add_edge(r, t, 3, g); add_edge(s, t, 2, g); add_edge(s, u, 6, g); add_edge(t, u, 7, g); add_edge(t, v, 4, g); add_edge(t, x, 2, g); add_edge(u, v, -1, g); add_edge(u, x, 1, g); add_edge(v, x, -2, g); auto d_map = get(vertex_distance, g); #if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 // VC++ has trouble with the named-parameter mechanism, so // we make a direct call to the underlying implementation function. std::vector< default_color_type > color(num_vertices(g)); std::vector< std::size_t > pred(num_vertices(g)); default_dijkstra_visitor vis; std::less< int > compare; closed_plus< int > combine; auto w_map = get(edge_weight, g); dag_shortest_paths(g, s, d_map, w_map, &color[0], &pred[0], vis, compare, combine, (std::numeric_limits< int >::max)(), 0); #else dag_shortest_paths(g, s, distance_map(d_map)); #endif graph_traits< graph_t >::vertex_iterator vi, vi_end; for (boost::tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) if (d_map[*vi] == (std::numeric_limits< int >::max)()) std::cout << name[*vi] << ": inifinity\n"; else std::cout << name[*vi] << ": " << d_map[*vi] << '\n'; return 0; } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |