123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- //=======================================================================
- // Copyright 2013 University of Warsaw.
- // Authors: Piotr Wygocki
- //
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- //=======================================================================
- #ifndef BOOST_GRAPH_FIND_FLOW_COST_HPP
- #define BOOST_GRAPH_FIND_FLOW_COST_HPP
- #include <boost/graph/iteration_macros.hpp>
- namespace boost
- {
- template < class Graph, class Capacity, class ResidualCapacity, class Weight >
- typename property_traits< Weight >::value_type find_flow_cost(const Graph& g,
- Capacity capacity, ResidualCapacity residual_capacity, Weight weight)
- {
- typedef typename property_traits< Weight >::value_type Cost;
- Cost cost = 0;
- BGL_FORALL_EDGES_T(e, g, Graph)
- {
- if (get(capacity, e) > Cost(0))
- {
- cost += (get(capacity, e) - get(residual_capacity, e))
- * get(weight, e);
- }
- }
- return cost;
- }
- template < class Graph, class P, class T, class R >
- typename detail::edge_weight_value< Graph, P, T, R >::type find_flow_cost(
- const Graph& g, const bgl_named_params< P, T, R >& params)
- {
- return find_flow_cost(g,
- choose_const_pmap(get_param(params, edge_capacity), g, edge_capacity),
- choose_const_pmap(get_param(params, edge_residual_capacity), g,
- edge_residual_capacity),
- choose_const_pmap(get_param(params, edge_weight), g, edge_weight));
- }
- template < class Graph >
- typename property_traits<
- typename property_map< Graph, edge_capacity_t >::type >::value_type
- find_flow_cost(const Graph& g)
- {
- bgl_named_params< int, buffer_param_t > params(0);
- return find_flow_cost(g, params);
- }
- } // boost
- #endif /* BOOST_GRAPH_FIND_FLOW_COST_HPP */
|