FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
graph/example/biconnected_components.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
/
biconnected_components.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
73 lines (64 loc) · 2.13 KB
Breadcrumbs
graph
/
example
/
biconnected_components.cpp
Copy path
File metadata and controls
73 lines (64 loc) · 2.13 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
//
=======================================================================
//
Copyright 2001 Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee,
//
//
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/config.hpp
>
#
include
<
vector
>
#
include
<
list
>
#
include
<
boost/graph/biconnected_components.hpp
>
#
include
<
boost/graph/adjacency_list.hpp
>
#
include
<
iterator
>
#
include
<
iostream
>
namespace
boost
{
struct
edge_component_t
{
enum
{
num =
555
};
using
kind = edge_property_tag;
} edge_component;
}
int
main
()
{
using
namespace
boost
;
using
graph_t
= adjacency_list< vecS, vecS, undirectedS, no_property,
property<
edge_component_t
, std::
size_t
> >;
using
vertex_t
= graph_traits<
graph_t
>::vertex_descriptor;
graph_t
g
(
9
);
add_edge
(
0
,
5
, g);
add_edge
(
0
,
1
, g);
add_edge
(
0
,
6
, g);
add_edge
(
1
,
2
, g);
add_edge
(
1
,
3
, g);
add_edge
(
1
,
4
, g);
add_edge
(
2
,
3
, g);
add_edge
(
4
,
5
, g);
add_edge
(
6
,
8
, g);
add_edge
(
6
,
7
, g);
add_edge
(
7
,
8
, g);
auto
component =
get
(edge_component, g);
auto
num_comps =
biconnected_components
(g, component);
std::cerr <<
"
Found
"
<< num_comps <<
"
biconnected components.
\n
"
;
std::vector<
vertex_t
> art_points;
articulation_points
(g,
std::back_inserter
(art_points));
std::cerr <<
"
Found
"
<< art_points.
size
() <<
"
articulation points.
\n
"
;
std::cout <<
"
graph A {
\n
"
<<
"
node[shape=
\"
circle
\"
]
\n
"
;
for
(std::
size_t
i =
0
; i < art_points.
size
(); ++i)
{
std::cout << (
char
)(art_points[i] +
'
A
'
)
<<
"
[ style=
\"
filled
\"
, fillcolor=
\"
red
\"
];
"
<< std::endl;
}
graph_traits<
graph_t
>::edge_iterator ei, ei_end;
for
(
boost::tie
(ei, ei_end) =
edges
(g); ei != ei_end; ++ei)
std::cout << (
char
)(
source
(*ei, g) +
'
A
'
) <<
"
--
"
<< (
char
)(
target
(*ei, g) +
'
A
'
) <<
"
[label=
\"
"
<< component[*ei] <<
"
\"
]
\n
"
;
std::cout <<
"
}
\n
"
;
return
0
;
}
Back
|
FazBrowse Home
|
New Git URL