GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — boost_graph/example/dag_shortest_paths.cpp at develop · stdgraph/boost_graph

Expand file tree

/

dag_shortest_paths.cpp

Copy path
More file actions
More file actions

Latest commit

 

History

History
History
76 lines (68 loc) · 2.23 KB
/

dag_shortest_paths.cpp

Copy path

File metadata and controls

76 lines (68 loc) · 2.23 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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.