FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
graph/example/filtered_graph.cpp at develop · boostorg/graph · GitHub
boostorg
graph
Repository navigation
Code
Issues
61
(61)
Pull requests
38
(38)
Discussions
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
graph
/
example
/
filtered_graph.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
76 lines (65 loc) · 1.81 KB
Breadcrumbs
graph
/
example
/
filtered_graph.cpp
Copy path
File metadata and controls
76 lines (65 loc) · 1.81 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 2001 University of Notre Dame.
//
Author: 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)
//
=======================================================================
/*
Sample output:
filtered edge set: (A,B) (C,D) (D,B)
filtered out-edges:
A --> B
B -->
C --> D
D --> B
E -->
*/
#
include
<
boost/config.hpp
>
#
include
<
iostream
>
#
include
<
boost/graph/adjacency_list.hpp
>
#
include
<
boost/graph/filtered_graph.hpp
>
#
include
<
boost/graph/graph_utility.hpp
>
template
<
typename
EdgeWeightMap >
struct
positive_edge_weight
{
positive_edge_weight
() {}
positive_edge_weight
(EdgeWeightMap weight) : m_weight(weight) {}
template
<
typename
Edge >
bool
operator
()(
const
Edge& e)
const
{
return
0
<
boost::get
(m_weight, e);
}
EdgeWeightMap m_weight;
};
int
main
()
{
using
namespace
boost
;
using
Graph = adjacency_list< vecS, vecS, directedS, no_property,
property<
edge_weight_t
,
int
> >;
using
EdgeWeightMap = property_map< Graph,
edge_weight_t
>::type;
enum
{
A,
B,
C,
D,
E,
N
};
const
char
* name =
"
ABCDE
"
;
Graph
g
(N);
add_edge
(A, B,
2
, g);
add_edge
(A, C,
0
, g);
add_edge
(C, D,
1
, g);
add_edge
(C, E,
0
, g);
add_edge
(D, B,
3
, g);
add_edge
(E, C,
0
, g);
positive_edge_weight< EdgeWeightMap >
filter
(
get
(edge_weight, g));
filtered_graph< Graph, positive_edge_weight< EdgeWeightMap > >
fg
(
g, filter);
std::cout <<
"
filtered edge set:
"
;
print_edges
(fg, name);
std::cout <<
"
filtered out-edges:
"
<< std::endl;
print_graph
(fg, name);
return
0
;
}
Back
|
FazBrowse Home
|
New Git URL