edge_connectivity.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. IMPORTANT!!!
  11. ~~~~~~~~~~~~
  12. This example uses interfaces that have been deprecated and removed from Boost.Grpah.
  13. Someone needs to update it, as it does NOT compile.
  14. */
  15. #include <boost/config.hpp>
  16. #include <set>
  17. #include <iostream>
  18. #include <iterator>
  19. #include <algorithm>
  20. #include <boost/graph/adjacency_list.hpp>
  21. #include <boost/graph/edge_connectivity.hpp>
  22. using namespace boost;
  23. int
  24. main()
  25. {
  26. const int N = 8;
  27. typedef adjacency_list<vecS, vecS, undirectedS> UndirectedGraph;
  28. UndirectedGraph g(N);
  29. add_edge(0, 1, g);
  30. add_edge(0, 2, g);
  31. add_edge(0, 3, g);
  32. add_edge(1, 2, g);
  33. add_edge(1, 3, g);
  34. add_edge(2, 3, g);
  35. add_edge(3, 4, g);
  36. add_edge(3, 7, g);
  37. add_edge(4, 5, g);
  38. add_edge(4, 6, g);
  39. add_edge(4, 7, g);
  40. add_edge(5, 6, g);
  41. add_edge(5, 7, g);
  42. add_edge(6, 7, g);
  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. degree_size_type c = edge_connectivity(g, std::back_inserter(disconnecting_set));
  47. std::cout << "The edge connectivity is " << c << "." << std::endl;
  48. std::cout << "The disconnecting set is {";
  49. std::copy(disconnecting_set.begin(), disconnecting_set.end(),
  50. std::ostream_iterator<edge_descriptor>(std::cout, " "));
  51. std::cout << "}." << std::endl;
  52. return 0;
  53. }