1 | //======================================================================= |
---|
2 | // Copyright 2000 University of Notre Dame. |
---|
3 | // Authors: Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee |
---|
4 | // |
---|
5 | // Distributed under the Boost Software License, Version 1.0. (See |
---|
6 | // accompanying file LICENSE_1_0.txt or copy at |
---|
7 | // http://www.boost.org/LICENSE_1_0.txt) |
---|
8 | //======================================================================= |
---|
9 | |
---|
10 | |
---|
11 | #include <boost/config.hpp> |
---|
12 | #include <set> |
---|
13 | #include <iostream> |
---|
14 | #include <iterator> |
---|
15 | #include <algorithm> |
---|
16 | #include <boost/graph/adjacency_list.hpp> |
---|
17 | #include <boost/graph/edge_connectivity.hpp> |
---|
18 | |
---|
19 | using namespace boost; |
---|
20 | |
---|
21 | int |
---|
22 | main() |
---|
23 | { |
---|
24 | const int N = 8; |
---|
25 | typedef adjacency_list<vecS, vecS, undirectedS> UndirectedGraph; |
---|
26 | UndirectedGraph g(N); |
---|
27 | |
---|
28 | add_edge(0, 1, g); |
---|
29 | add_edge(0, 2, g); |
---|
30 | add_edge(0, 3, g); |
---|
31 | add_edge(1, 2, g); |
---|
32 | add_edge(1, 3, g); |
---|
33 | add_edge(2, 3, g); |
---|
34 | add_edge(3, 4, g); |
---|
35 | add_edge(3, 7, g); |
---|
36 | add_edge(4, 5, g); |
---|
37 | add_edge(4, 6, g); |
---|
38 | add_edge(4, 7, g); |
---|
39 | add_edge(5, 6, g); |
---|
40 | add_edge(5, 7, g); |
---|
41 | add_edge(6, 7, g); |
---|
42 | |
---|
43 | typedef graph_traits<UndirectedGraph>::edge_descriptor edge_descriptor; |
---|
44 | typedef graph_traits<UndirectedGraph>::degree_size_type degree_size_type; |
---|
45 | std::vector<edge_descriptor> disconnecting_set; |
---|
46 | |
---|
47 | degree_size_type c = edge_connectivity(g, std::back_inserter(disconnecting_set)); |
---|
48 | |
---|
49 | std::cout << "The edge connectivity is " << c << "." << std::endl; |
---|
50 | std::cout << "The disconnecting set is {"; |
---|
51 | |
---|
52 | std::copy(disconnecting_set.begin(), disconnecting_set.end(), |
---|
53 | std::ostream_iterator<edge_descriptor>(std::cout, " ")); |
---|
54 | std::cout << "}." << std::endl; |
---|
55 | |
---|
56 | return 0; |
---|
57 | } |
---|