|
1 | 1 | template <adjacency_list G, |
2 | 2 | input_range Sources, |
3 | | - class Distances, |
4 | | - class Predecessors, |
5 | | - class WF = function<vertex_property_map_value_t<Distances>(const remove_reference_t<G>&, |
6 | | - const edge_t<G>&)>, |
| 3 | + class DistanceFn, |
| 4 | + class PredecessorFn, |
| 5 | + class WF = function<distance_fn_value_t<DistanceFn, G>(const remove_reference_t<G>&, |
| 6 | + const edge_t<G>&)>, |
7 | 7 | class Visitor = empty_visitor, |
8 | | - class Compare = less<vertex_property_map_value_t<Distances>>, |
9 | | - class Combine = plus<vertex_property_map_value_t<Distances>>> |
10 | | -requires vertex_property_map_for<Distances, G> && |
11 | | - vertex_property_map_for<Predecessors, G> && |
| 8 | + class Compare = less<distance_fn_value_t<DistanceFn, G>>, |
| 9 | + class Combine = plus<distance_fn_value_t<DistanceFn, G>>> |
| 10 | +requires distance_fn_for<DistanceFn, G> && |
| 11 | + predecessor_fn_for<PredecessorFn, G> && |
12 | 12 | convertible_to<range_value_t<Sources>, vertex_id_t<G>> && |
13 | | - is_arithmetic_v<vertex_property_map_value_t<Distances>> && |
14 | | - convertible_to<vertex_id_t<G>, vertex_property_map_value_t<Predecessors>> && |
15 | | - basic_edge_weight_function<G, WF, vertex_property_map_value_t<Distances>, Compare, Combine> |
| 13 | + basic_edge_weight_function<G, WF, distance_fn_value_t<DistanceFn, G>, Compare, Combine> |
16 | 14 | [[nodiscard]] constexpr optional<vertex_id_t<G>> bellman_ford_shortest_paths( |
17 | | - G&& g, |
18 | | - const Sources& sources, |
19 | | - Distances& distances, |
20 | | - Predecessors& predecessor, |
21 | | - WF&& weight = [](const auto&, |
22 | | - const edge_t<G>& uv) { return vertex_property_map_value_t<Distances>(1); }, |
23 | | - Visitor&& visitor = empty_visitor(), |
24 | | - Compare&& compare = less<vertex_property_map_value_t<Distances>>(), |
25 | | - Combine&& combine = plus<vertex_property_map_value_t<Distances>>()); |
| 15 | + G&& g, |
| 16 | + const Sources& sources, |
| 17 | + DistanceFn&& distance, |
| 18 | + PredecessorFn&& predecessor, |
| 19 | + WF&& weight = [](const auto&, |
| 20 | + const edge_t<G>& uv) { return distance_fn_value_t<DistanceFn, G>(1); }, |
| 21 | + Visitor&& visitor = empty_visitor(), |
| 22 | + Compare&& compare = less<distance_fn_value_t<DistanceFn, G>>(), |
| 23 | + Combine&& combine = plus<distance_fn_value_t<DistanceFn, G>>()); |
0 commit comments