Пример #1
0
 inline void
 kruskal_minimum_spanning_tree(const Graph& g,
                               OutputIterator spanning_tree_edges, 
                               const bgl_named_params<P, T, R>& params)
 {
   typedef typename graph_traits<Graph>::vertices_size_type size_type;
   typedef typename graph_traits<Graph>::vertex_descriptor vertex_t;
   if (num_vertices(g) == 0) return; // Nothing to do in this case
   typename graph_traits<Graph>::vertices_size_type n;
   n = is_default_param(get_param(params, vertex_rank))
                                  ? num_vertices(g) : 1;
   std::vector<size_type> rank_map(n);
   n = is_default_param(get_param(params, vertex_predecessor))
                                  ? num_vertices(g) : 1;
   std::vector<vertex_t> pred_map(n);
   
   detail::kruskal_mst_impl
     (g, spanning_tree_edges, 
      choose_param
      (get_param(params, vertex_rank), 
       make_iterator_property_map
       (rank_map.begin(), 
        choose_pmap(get_param(params, vertex_index), g, vertex_index), rank_map[0])),
      choose_param
      (get_param(params, vertex_predecessor), 
       make_iterator_property_map
       (pred_map.begin(), 
        choose_const_pmap(get_param(params, vertex_index), g, vertex_index), 
        pred_map[0])),
      choose_const_pmap(get_param(params, edge_weight), g, edge_weight));
 }
 bool bellman_ford_shortest_paths
   (EdgeListGraph& g, Size N, 
    const bgl_named_params<P, T, R>& params)
 {                                
   return detail::bellman_dispatch
     (g, N,
      choose_const_pmap(get_param(params, edge_weight), g, edge_weight),
      choose_pmap(get_param(params, vertex_distance), g, vertex_distance),
      params);
 }
 bool bellman_ford_shortest_paths
   (VertexAndEdgeListGraph& g, 
    const bgl_named_params<P, T, R>& params)
 {               
   function_requires<VertexListGraphConcept<VertexAndEdgeListGraph> >();
   return detail::bellman_dispatch
     (g, num_vertices(g),
      choose_const_pmap(get_param(params, edge_weight), g, edge_weight),
      choose_pmap(get_param(params, vertex_distance), g, vertex_distance),
      params);
 }
 bool bellman_ford_shortest_paths
   (VertexAndEdgeListGraph& g, 
    const bgl_named_params<P, T, R>& params)
 {               
   BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<VertexAndEdgeListGraph> ));
   return detail::bellman_dispatch
     (g, num_vertices(g),
      choose_const_pmap(get_param(params, edge_weight), g, edge_weight),
      choose_pmap(get_param(params, vertex_distance), g, vertex_distance),
      params);
 }
 static typename edge_capacity_value<Graph, P, T, R>::type
 apply
 (Graph& g,
  typename graph_traits<Graph>::vertex_descriptor src,
  typename graph_traits<Graph>::vertex_descriptor sink,
  PredMap pred,
  const bgl_named_params<P, T, R>& params,
  ColorMap color)
 {
   return edmunds_karp_max_flow
     (g, src, sink, 
      choose_const_pmap(get_param(params, edge_capacity), g, edge_capacity),
      choose_pmap(get_param(params, edge_residual_capacity), 
                  g, edge_residual_capacity),
      choose_const_pmap(get_param(params, edge_reverse), g, edge_reverse),
      color, pred);
 }