typename property_traits<ComponentMap>::value_type strong_components_impl (const Graph& g, // Input ComponentMap comp, // Output // Internal record keeping RootMap root, DiscoverTime discover_time, const bgl_named_params<P, T, R>& params) { typedef typename graph_traits<Graph>::vertex_descriptor Vertex; BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<ComponentMap, Vertex> )); BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<RootMap, Vertex> )); typedef typename property_traits<RootMap>::value_type RootV; BOOST_CONCEPT_ASSERT(( ConvertibleConcept<RootV, Vertex> )); BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<DiscoverTime, Vertex> )); typename property_traits<ComponentMap>::value_type total = 0; std::stack<Vertex> s; detail::tarjan_scc_visitor<ComponentMap, RootMap, DiscoverTime, std::stack<Vertex> > vis(comp, root, discover_time, total, s); depth_first_search(g, params.visitor(vis)); return total; }
void topological_sort(VertexListGraph& g, OutputIterator result, const bgl_named_params<P, T, R>& params) { typedef topo_sort_visitor<OutputIterator> TopoVisitor; depth_first_search(g, params.visitor(TopoVisitor(result))); }