@@ -261,8 +261,8 @@ class EdgeGreater : private EdgeComparatorBase {
261261 using is_transparent = int ;
262262};
263263
264- template <class InIt , class OutIt , class Pred >
265- OutIt kruskal (const std::size_t n, InIt first, InIt last, OutIt dest, Pred pred) {
264+ template <class InIt , class OutIt , class Pred = EdgeLess >
265+ OutIt kruskal (const std::size_t n, InIt first, InIt last, OutIt dest, Pred pred = Pred{} ) {
266266 DisjointSet<std::size_t > ds (n);
267267 std::sort (first, last, pred);
268268 std::size_t edge_count = 0 ;
@@ -283,12 +283,7 @@ OutIt kruskal(const std::size_t n, InIt first, InIt last, OutIt dest, Pred pred)
283283}
284284
285285template <class InIt , class OutIt >
286- OutIt kruskal (const std::size_t n, InIt first, InIt last, OutIt dest) {
287- return kruskal (n, first, last, dest, EdgeLess{});
288- }
289-
290- template <class InIt , class OutIt >
291- OutIt dijkstra (const std::size_t n, InIt first, InIt last, OutIt dest, const std::size_t start) {
286+ OutIt dijkstra (const std::size_t n, InIt first, InIt last, OutIt dest, const std::size_t start = 0 ) {
292287 std::vector<bool > visited (n, false );
293288 std::vector<std::size_t > distances (n, std::numeric_limits<std::size_t >::max ());
294289 distances[start] = 0 ;
@@ -320,13 +315,8 @@ OutIt dijkstra(const std::size_t n, InIt first, InIt last, OutIt dest, const std
320315 return dest;
321316}
322317
323- template <class InIt , class OutIt >
324- OutIt dijkstra (const std::size_t n, InIt first, InIt last, OutIt dest) {
325- return dijkstra (n, first, last, dest, 0 );
326- }
327-
328- template <class InIt , class OutIt , class Pr1 , class Pr2 >
329- OutIt boruvka (const std::size_t n, InIt first, InIt last, OutIt dest, Pr1 preferred, Pr2 tie_break) {
318+ template <class InIt , class OutIt , class Pr1 = EdgeLess, class Pr2 = EdgeLess>
319+ OutIt boruvka (const std::size_t n, InIt first, InIt last, OutIt dest, Pr1 preferred = Pr1{}, Pr2 tie_break = Pr2{}) {
330320 DisjointSet<std::size_t > ds (n);
331321 std::vector<std::size_t > cheapest (n, std::numeric_limits<std::size_t >::max ());
332322 std::vector<std::size_t > cheapest_edge (n, std::numeric_limits<std::size_t >::max ());
@@ -365,11 +355,6 @@ OutIt boruvka(const std::size_t n, InIt first, InIt last, OutIt dest, Pr1 prefer
365355 return dest;
366356}
367357
368- template <class InIt , class OutIt >
369- OutIt boruvka (const std::size_t n, InIt first, InIt last, OutIt dest) {
370- return boruvka (n, first, last, dest, EdgeLess{}, EdgeLess{});
371- }
372-
373358CPL_END
374359
375360#endif // TREE_H_
0 commit comments