diff --git a/include/boost/graph/biconnected_components.hpp b/include/boost/graph/biconnected_components.hpp index 9015c37f..f09d9197 100644 --- a/include/boost/graph/biconnected_components.hpp +++ b/include/boost/graph/biconnected_components.hpp @@ -173,19 +173,18 @@ namespace boost make_iterator_property_map(pred.begin(), get(vertex_index, g))); } - template < typename Graph, typename ComponentMap, typename OutputIterator> + template std::pair - biconnected_components(const Graph& g, ComponentMap comp, OutputIterator out) + biconnected_components(const Graph& g, ComponentMap comp, OutputIterator out, + VertexIndexMap index_map) { typedef typename graph_traits::vertex_descriptor vertex_t; typedef typename graph_traits::vertices_size_type vertices_size_type; std::vector discover_time(num_vertices(g)); - std::vector lowpt(num_vertices(g)); - - typename property_map::const_type index_map - = get(vertex_index, g); + std::vector lowpt(num_vertices(g)); return biconnected_components (g, comp, out, @@ -193,6 +192,13 @@ namespace boost make_iterator_property_map(lowpt.begin(), index_map)); } + template < typename Graph, typename ComponentMap, typename OutputIterator> + std::pair + biconnected_components(const Graph& g, ComponentMap comp, OutputIterator out) + { + return biconnected_components(g, comp, out, get(vertex_index, g)); + } + namespace graph_detail { struct dummy_output_iterator { @@ -220,12 +226,23 @@ namespace boost graph_detail::dummy_output_iterator()).first; } + template + OutputIterator + articulation_points(const Graph& g, OutputIterator out, + VertexIndexMap index_map) + { + return biconnected_components(g, dummy_property_map(), out, + index_map).second; + } + template OutputIterator articulation_points(const Graph& g, OutputIterator out) { - return biconnected_components(g, dummy_property_map(), out).second; + return biconnected_components(g, dummy_property_map(), out, + get(vertex_index, g)).second; } + } // namespace boost #endif /* BOOST_GRAPH_BICONNECTED_COMPONENTS_HPP */