Changes in / [454:f599fa651202:455:5a1e9fdcfd3a] in lemon-1.2
- Files:
-
- 2 added
- 2 deleted
- 106 edited
Legend:
- Unmodified
- Added
- Removed
-
LICENSE
r107 r440 2 2 copyright/license. 3 3 4 Copyright (C) 2003-200 8Egervary Jeno Kombinatorikus Optimalizalasi4 Copyright (C) 2003-2009 Egervary Jeno Kombinatorikus Optimalizalasi 5 5 Kutatocsoport (Egervary Combinatorial Optimization Research Group, 6 6 EGRES). -
demo/arg_parser_demo.cc
r311 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
demo/graph_to_eps_demo.cc
r313 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 86 86 coords(coords). 87 87 title("Sample .eps figure"). 88 copyright("(C) 2003-200 8LEMON Project").88 copyright("(C) 2003-2009 LEMON Project"). 89 89 run(); 90 90 … … 93 93 coords(coords). 94 94 title("Sample .eps figure"). 95 copyright("(C) 2003-200 8LEMON Project").95 copyright("(C) 2003-2009 LEMON Project"). 96 96 absoluteNodeSizes().absoluteArcWidths(). 97 97 nodeScale(2).nodeSizes(sizes). … … 106 106 graphToEps(g,"graph_to_eps_demo_out_3_arr.eps"). 107 107 title("Sample .eps figure (with arrowheads)"). 108 copyright("(C) 2003-200 8LEMON Project").108 copyright("(C) 2003-2009 LEMON Project"). 109 109 absoluteNodeSizes().absoluteArcWidths(). 110 110 nodeColors(composeMap(palette,colors)). … … 133 133 graphToEps(g,"graph_to_eps_demo_out_4_par.eps"). 134 134 title("Sample .eps figure (parallel arcs)"). 135 copyright("(C) 2003-200 8LEMON Project").135 copyright("(C) 2003-2009 LEMON Project"). 136 136 absoluteNodeSizes().absoluteArcWidths(). 137 137 nodeShapes(shapes). … … 148 148 graphToEps(g,"graph_to_eps_demo_out_5_par_arr.eps"). 149 149 title("Sample .eps figure (parallel arcs and arrowheads)"). 150 copyright("(C) 2003-200 8LEMON Project").150 copyright("(C) 2003-2009 LEMON Project"). 151 151 absoluteNodeSizes().absoluteArcWidths(). 152 152 nodeScale(2).nodeSizes(sizes). … … 164 164 graphToEps(g,"graph_to_eps_demo_out_6_par_arr_a4.eps"). 165 165 title("Sample .eps figure (fits to A4)"). 166 copyright("(C) 2003-200 8LEMON Project").166 copyright("(C) 2003-2009 LEMON Project"). 167 167 scaleToA4(). 168 168 absoluteNodeSizes().absoluteArcWidths(). … … 194 194 scale(60). 195 195 title("Sample .eps figure (Palette demo)"). 196 copyright("(C) 2003-200 8LEMON Project").196 copyright("(C) 2003-2009 LEMON Project"). 197 197 coords(hcoords). 198 198 absoluteNodeSizes().absoluteArcWidths(). -
demo/lgf_demo.cc
r294 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
doc/coding_style.dox
r210 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
doc/dirs.dox
r318 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 72 72 \brief Auxiliary tools for implementation. 73 73 74 This directory contains some auxiliary classes for implementing graphs, 74 This directory contains some auxiliary classes for implementing graphs, 75 75 maps and some other classes. 76 76 As a user you typically don't have to deal with these files. -
doc/groups.dox
r451 r455 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
doc/lgf.dox
r313 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
doc/license.dox
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
doc/mainpage.dox
r314 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
doc/migration.dox
r343 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
doc/named-param.dox
r269 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
doc/namespaces.dox
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
doc/template.h
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/Makefile.am
r418 r445 8 8 9 9 lemon_libemon_la_SOURCES = \ 10 11 12 13 10 lemon/arg_parser.cc \ 11 lemon/base.cc \ 12 lemon/color.cc \ 13 lemon/random.cc 14 14 15 15 #lemon_libemon_la_CXXFLAGS = $(GLPK_CFLAGS) $(CPLEX_CFLAGS) $(SOPLEX_CXXFLAGS) $(AM_CXXFLAGS) … … 18 18 lemon_HEADERS += \ 19 19 lemon/adaptors.h \ 20 20 lemon/arg_parser.h \ 21 21 lemon/assert.h \ 22 23 24 25 22 lemon/bfs.h \ 23 lemon/bin_heap.h \ 24 lemon/circulation.h \ 25 lemon/color.h \ 26 26 lemon/concept_check.h \ 27 27 lemon/counter.h \ 28 28 lemon/core.h \ 29 30 31 32 29 lemon/dfs.h \ 30 lemon/dijkstra.h \ 31 lemon/dim2.h \ 32 lemon/dimacs.h \ 33 33 lemon/elevator.h \ 34 34 lemon/error.h \ 35 35 lemon/full_graph.h \ 36 37 36 lemon/graph_to_eps.h \ 37 lemon/grid_graph.h \ 38 38 lemon/hypercube_graph.h \ 39 39 lemon/kruskal.h \ … … 48 48 lemon/path.h \ 49 49 lemon/preflow.h \ 50 lemon/random.h \ 50 lemon/radix_sort.h \ 51 lemon/random.h \ 51 52 lemon/smart_graph.h \ 52 53 lemon/suurballe.h \ 53 54 54 lemon/time_measure.h \ 55 lemon/tolerance.h \ 55 56 lemon/unionfind.h 56 57 … … 59 60 lemon/bits/array_map.h \ 60 61 lemon/bits/base_extender.h \ 61 62 lemon/bits/bezier.h \ 62 63 lemon/bits/default_map.h \ 63 64 lemon/bits/enable_if.h \ 64 65 lemon/bits/graph_adaptor_extender.h \ 65 66 lemon/bits/graph_extender.h \ -
lemon/arg_parser.cc
r311 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/arg_parser.h
r311 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/assert.h
r290 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/base.cc
r220 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bfs.h
r405 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 1742 1742 /// \pre Either \ref run(Node) "run()" or \ref init() 1743 1743 /// must be called before using this function. 1744 bool reached(Node v) { return (*_reached)[v]; }1744 bool reached(Node v) const { return (*_reached)[v]; } 1745 1745 1746 1746 ///@} -
lemon/bin_heap.h
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/alteration_notifier.h
r361 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/array_map.h
r361 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/base_extender.h
r361 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/bezier.h
r314 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/default_map.h
r314 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/enable_if.h
r314 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/graph_adaptor_extender.h
r453 r455 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/graph_extender.h
r361 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/map_extender.h
r314 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/path_dump.h
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/traits.h
r360 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/bits/variant.h
r416 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 22 22 #include <lemon/assert.h> 23 23 24 // /\file25 // /\brief Variant types24 // \file 25 // \brief Variant types 26 26 27 27 namespace lemon { … … 37 37 38 38 39 // /\brief Simple Variant type for two types40 // /41 // / Simple Variant type for two types. The Variant type is a type42 // / safe union. The C++ has strong limitations for using unions, by43 // / example we can not store type with nondefault constructor or44 // / destructor in anunion. This class always knowns the current45 // /state of the variant and it cares for the proper construction46 // /and destruction.39 // \brief Simple Variant type for two types 40 // 41 // Simple Variant type for two types. The Variant type is a type-safe 42 // union. C++ has strong limitations for using unions, for 43 // example you cannot store a type with non-default constructor or 44 // destructor in a union. This class always knowns the current 45 // state of the variant and it cares for the proper construction 46 // and destruction. 47 47 template <typename _First, typename _Second> 48 48 class BiVariant { 49 49 public: 50 50 51 // /\brief The \c First type.51 // \brief The \c First type. 52 52 typedef _First First; 53 // /\brief The \c Second type.53 // \brief The \c Second type. 54 54 typedef _Second Second; 55 55 56 // /\brief Constructor57 // /58 // /This constructor initalizes to the default value of the \c First59 // /type.56 // \brief Constructor 57 // 58 // This constructor initalizes to the default value of the \c First 59 // type. 60 60 BiVariant() { 61 61 flag = true; … … 63 63 } 64 64 65 // /\brief Constructor66 // /67 // /This constructor initalizes to the given value of the \c First68 // /type.65 // \brief Constructor 66 // 67 // This constructor initalizes to the given value of the \c First 68 // type. 69 69 BiVariant(const First& f) { 70 70 flag = true; … … 72 72 } 73 73 74 // /\brief Constructor75 // /76 // /This constructor initalizes to the given value of the \c77 // /Second type.74 // \brief Constructor 75 // 76 // This constructor initalizes to the given value of the \c 77 // Second type. 78 78 BiVariant(const Second& s) { 79 79 flag = false; … … 81 81 } 82 82 83 // /\brief Copy constructor84 // /85 // /Copy constructor83 // \brief Copy constructor 84 // 85 // Copy constructor 86 86 BiVariant(const BiVariant& bivariant) { 87 87 flag = bivariant.flag; … … 93 93 } 94 94 95 // /\brief Destrcutor96 // /97 // /Destructor95 // \brief Destrcutor 96 // 97 // Destructor 98 98 ~BiVariant() { 99 99 destroy(); 100 100 } 101 101 102 // /\brief Set to the default value of the \c First type.103 // /104 // /This function sets the variant to the default value of the \c105 // /First type.102 // \brief Set to the default value of the \c First type. 103 // 104 // This function sets the variant to the default value of the \c 105 // First type. 106 106 BiVariant& setFirst() { 107 107 destroy(); … … 111 111 } 112 112 113 // /\brief Set to the given value of the \c First type.114 // /115 // /This function sets the variant to the given value of the \c116 // /First type.113 // \brief Set to the given value of the \c First type. 114 // 115 // This function sets the variant to the given value of the \c 116 // First type. 117 117 BiVariant& setFirst(const First& f) { 118 118 destroy(); … … 122 122 } 123 123 124 // /\brief Set to the default value of the \c Second type.125 // /126 // /This function sets the variant to the default value of the \c127 // /Second type.124 // \brief Set to the default value of the \c Second type. 125 // 126 // This function sets the variant to the default value of the \c 127 // Second type. 128 128 BiVariant& setSecond() { 129 129 destroy(); … … 133 133 } 134 134 135 // /\brief Set to the given value of the \c Second type.136 // /137 // /This function sets the variant to the given value of the \c138 // /Second type.135 // \brief Set to the given value of the \c Second type. 136 // 137 // This function sets the variant to the given value of the \c 138 // Second type. 139 139 BiVariant& setSecond(const Second& s) { 140 140 destroy(); … … 144 144 } 145 145 146 // /\brief Operator form of the \c setFirst()146 // \brief Operator form of the \c setFirst() 147 147 BiVariant& operator=(const First& f) { 148 148 return setFirst(f); 149 149 } 150 150 151 // /\brief Operator form of the \c setSecond()151 // \brief Operator form of the \c setSecond() 152 152 BiVariant& operator=(const Second& s) { 153 153 return setSecond(s); 154 154 } 155 155 156 // /\brief Assign operator156 // \brief Assign operator 157 157 BiVariant& operator=(const BiVariant& bivariant) { 158 158 if (this == &bivariant) return *this; … … 167 167 } 168 168 169 // /\brief Reference to the value170 // /171 // /Reference to the value of the \c First type.172 // /\pre The BiVariant should store value of \c First type.169 // \brief Reference to the value 170 // 171 // Reference to the value of the \c First type. 172 // \pre The BiVariant should store value of \c First type. 173 173 First& first() { 174 174 LEMON_DEBUG(flag, "Variant wrong state"); 175 return *reinterpret_cast<First*>(data); 176 } 177 178 // /\brief Const reference to the value179 // /180 // /Const reference to the value of the \c First type.181 // /\pre The BiVariant should store value of \c First type.182 const First& first() const { 175 return *reinterpret_cast<First*>(data); 176 } 177 178 // \brief Const reference to the value 179 // 180 // Const reference to the value of the \c First type. 181 // \pre The BiVariant should store value of \c First type. 182 const First& first() const { 183 183 LEMON_DEBUG(flag, "Variant wrong state"); 184 return *reinterpret_cast<const First*>(data); 185 } 186 187 // /\brief Operator form of the \c first()184 return *reinterpret_cast<const First*>(data); 185 } 186 187 // \brief Operator form of the \c first() 188 188 operator First&() { return first(); } 189 // /\brief Operator form of the const \c first()189 // \brief Operator form of the const \c first() 190 190 operator const First&() const { return first(); } 191 191 192 // /\brief Reference to the value193 // /194 // /Reference to the value of the \c Second type.195 // /\pre The BiVariant should store value of \c Second type.196 Second& second() { 192 // \brief Reference to the value 193 // 194 // Reference to the value of the \c Second type. 195 // \pre The BiVariant should store value of \c Second type. 196 Second& second() { 197 197 LEMON_DEBUG(!flag, "Variant wrong state"); 198 return *reinterpret_cast<Second*>(data); 199 } 200 201 // /\brief Const reference to the value202 // /203 // /Const reference to the value of the \c Second type.204 // /\pre The BiVariant should store value of \c Second type.205 const Second& second() const { 198 return *reinterpret_cast<Second*>(data); 199 } 200 201 // \brief Const reference to the value 202 // 203 // Const reference to the value of the \c Second type. 204 // \pre The BiVariant should store value of \c Second type. 205 const Second& second() const { 206 206 LEMON_DEBUG(!flag, "Variant wrong state"); 207 return *reinterpret_cast<const Second*>(data); 208 } 209 210 // /\brief Operator form of the \c second()207 return *reinterpret_cast<const Second*>(data); 208 } 209 210 // \brief Operator form of the \c second() 211 211 operator Second&() { return second(); } 212 // /\brief Operator form of the const \c second()212 // \brief Operator form of the const \c second() 213 213 operator const Second&() const { return second(); } 214 214 215 // /\brief %True when the variant is in the first state216 // /217 // /%True when the variant stores value of the \c First type.215 // \brief %True when the variant is in the first state 216 // 217 // %True when the variant stores value of the \c First type. 218 218 bool firstState() const { return flag; } 219 219 220 // /\brief %True when the variant is in the second state221 // /222 // /%True when the variant stores value of the \c Second type.220 // \brief %True when the variant is in the second state 221 // 222 // %True when the variant stores value of the \c Second type. 223 223 bool secondState() const { return !flag; } 224 224 … … 290 290 } 291 291 292 // /\brief Variant type293 // /294 // / Simple Variant type. The Variant type is a type safe union. The295 // / C++ has strong limitations for using unions, for example we296 // / cannot store type with nondefault constructor or destructor in297 // /a union. This class always knowns the current state of the298 // /variant and it cares for the proper construction and299 // /destruction.300 // /301 // /\param _num The number of the types which can be stored in the302 // /variant type.303 // /\param _TypeMap This class describes the types of the Variant. The304 // /_TypeMap::Map<index>::Type should be a valid type for each index305 // /in the range {0, 1, ..., _num - 1}. The \c VariantTypeMap is helper306 // /class to define such type mappings up to 10 types.307 // /308 // /And the usage of the class:309 // /\code310 // /typedef Variant<3, VariantTypeMap<int, std::string, double> > MyVariant;311 // /MyVariant var;312 // /var.set<0>(12);313 // /std::cout << var.get<0>() << std::endl;314 // /var.set<1>("alpha");315 // /std::cout << var.get<1>() << std::endl;316 // /var.set<2>(0.75);317 // /std::cout << var.get<2>() << std::endl;318 // /\endcode319 // /320 // /The result of course:321 // /\code322 // /12323 // /alpha324 // /0.75325 // /\endcode292 // \brief Variant type 293 // 294 // Simple Variant type. The Variant type is a type-safe union. 295 // C++ has strong limitations for using unions, for example you 296 // cannot store type with non-default constructor or destructor in 297 // a union. This class always knowns the current state of the 298 // variant and it cares for the proper construction and 299 // destruction. 300 // 301 // \param _num The number of the types which can be stored in the 302 // variant type. 303 // \param _TypeMap This class describes the types of the Variant. The 304 // _TypeMap::Map<index>::Type should be a valid type for each index 305 // in the range {0, 1, ..., _num - 1}. The \c VariantTypeMap is helper 306 // class to define such type mappings up to 10 types. 307 // 308 // And the usage of the class: 309 //\code 310 // typedef Variant<3, VariantTypeMap<int, std::string, double> > MyVariant; 311 // MyVariant var; 312 // var.set<0>(12); 313 // std::cout << var.get<0>() << std::endl; 314 // var.set<1>("alpha"); 315 // std::cout << var.get<1>() << std::endl; 316 // var.set<2>(0.75); 317 // std::cout << var.get<2>() << std::endl; 318 //\endcode 319 // 320 // The result of course: 321 //\code 322 // 12 323 // alpha 324 // 0.75 325 //\endcode 326 326 template <int _num, typename _TypeMap> 327 327 class Variant { … … 332 332 typedef _TypeMap TypeMap; 333 333 334 // /\brief Constructor335 // /336 // /This constructor initalizes to the default value of the \c type337 // /with 0 index.334 // \brief Constructor 335 // 336 // This constructor initalizes to the default value of the \c type 337 // with 0 index. 338 338 Variant() { 339 339 flag = 0; … … 343 343 344 344 345 // /\brief Copy constructor346 // /347 // /Copy constructor345 // \brief Copy constructor 346 // 347 // Copy constructor 348 348 Variant(const Variant& variant) { 349 349 flag = variant.flag; … … 351 351 } 352 352 353 // /\brief Assign operator354 // /355 // /Assign operator353 // \brief Assign operator 354 // 355 // Assign operator 356 356 Variant& operator=(const Variant& variant) { 357 357 if (this == &variant) return *this; … … 364 364 } 365 365 366 // /\brief Destrcutor367 // /368 // /Destructor366 // \brief Destrcutor 367 // 368 // Destructor 369 369 ~Variant() { 370 370 _variant_bits::Memory<num - 1, TypeMap>::destroy(flag, data); 371 371 } 372 372 373 // /\brief Set to the default value of the type with \c _idx index.374 // /375 // /This function sets the variant to the default value of the376 // /type with \c _idx index.373 // \brief Set to the default value of the type with \c _idx index. 374 // 375 // This function sets the variant to the default value of the 376 // type with \c _idx index. 377 377 template <int _idx> 378 378 Variant& set() { … … 384 384 } 385 385 386 // /\brief Set to the given value of the type with \c _idx index.387 // /388 // /This function sets the variant to the given value of the type389 // /with \c _idx index.386 // \brief Set to the given value of the type with \c _idx index. 387 // 388 // This function sets the variant to the given value of the type 389 // with \c _idx index. 390 390 template <int _idx> 391 391 Variant& set(const typename _TypeMap::template Map<_idx>::Type& init) { … … 397 397 } 398 398 399 // /\brief Gets the current value of the type with \c _idx index.400 // /401 // /Gets the current value of the type with \c _idx index.399 // \brief Gets the current value of the type with \c _idx index. 400 // 401 // Gets the current value of the type with \c _idx index. 402 402 template <int _idx> 403 403 const typename TypeMap::template Map<_idx>::Type& get() const { … … 407 407 } 408 408 409 // /\brief Gets the current value of the type with \c _idx index.410 // /411 // /Gets the current value of the type with \c _idx index.409 // \brief Gets the current value of the type with \c _idx index. 410 // 411 // Gets the current value of the type with \c _idx index. 412 412 template <int _idx> 413 413 typename _TypeMap::template Map<_idx>::Type& get() { … … 417 417 } 418 418 419 // /\brief Returns the current state of the variant.420 // /421 // /Returns the current state of the variant.419 // \brief Returns the current state of the variant. 420 // 421 // Returns the current state of the variant. 422 422 int state() const { 423 423 return flag; … … 451 451 452 452 template <int _idx, typename _T0, typename _T1, typename _T2, 453 typename _T3, typename _T 5, typename _T4, typename _T6,453 typename _T3, typename _T4, typename _T5, typename _T6, 454 454 typename _T7, typename _T8, typename _T9> 455 455 struct Mapper { … … 470 470 } 471 471 472 // /\brief Helper class for Variant473 // /474 // /Helper class to define type mappings for Variant. This class475 // /converts the template parameters to be mappable by integer.476 // /\see Variant472 // \brief Helper class for Variant 473 // 474 // Helper class to define type mappings for Variant. This class 475 // converts the template parameters to be mappable by integer. 476 // \see Variant 477 477 template < 478 478 typename _T0, 479 479 typename _T1 = void, typename _T2 = void, typename _T3 = void, 480 typename _T 5 = void, typename _T4= void, typename _T6 = void,480 typename _T4 = void, typename _T5 = void, typename _T6 = void, 481 481 typename _T7 = void, typename _T8 = void, typename _T9 = void> 482 482 struct VariantTypeMap { -
lemon/bits/vector_map.h
r361 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/circulation.h
r402 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 420 420 /// \pre Either \ref run() or \ref init() must be called before 421 421 /// using this function. 422 const Elevator& elevator() {422 const Elevator& elevator() const { 423 423 return *_level; 424 424 } … … 645 645 /// \pre Either \ref run() or \ref init() must be called before 646 646 /// using this function. 647 const FlowMap& flowMap() {647 const FlowMap& flowMap() const { 648 648 return *_flow; 649 649 } … … 670 670 \sa checkBarrier() 671 671 */ 672 bool barrier(const Node& node) 672 bool barrier(const Node& node) const 673 673 { 674 674 return (*_level)[node] >= _el; … … 693 693 /// \sa checkBarrier() 694 694 template<class BarrierMap> 695 void barrierMap(BarrierMap &bar) 695 void barrierMap(BarrierMap &bar) const 696 696 { 697 697 for(NodeIt n(_g);n!=INVALID;++n) … … 713 713 ///Check if the found flow is a feasible circulation, 714 714 /// 715 bool checkFlow() {715 bool checkFlow() const { 716 716 for(ArcIt e(_g);e!=INVALID;++e) 717 717 if((*_flow)[e]<(*_lo)[e]||(*_flow)[e]>(*_up)[e]) return false; … … 731 731 ///\sa barrier() 732 732 ///\sa barrierMap() 733 bool checkBarrier() 733 bool checkBarrier() const 734 734 { 735 735 Value delta=0; -
lemon/color.cc
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/color.h
r313 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/concept_check.h
r285 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/concepts/digraph.h
r263 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/concepts/graph.h
r263 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/concepts/graph_components.h
r313 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/concepts/heap.h
r290 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/concepts/maps.h
r314 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/concepts/path.h
r281 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/connectivity.h
r417 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 17 17 */ 18 18 19 #ifndef LEMON_ TOPOLOGY_H20 #define LEMON_ TOPOLOGY_H19 #ifndef LEMON_CONNECTIVITY_H 20 #define LEMON_CONNECTIVITY_H 21 21 22 22 #include <lemon/dfs.h> … … 155 155 } 156 156 157 namespace _ topology_bits {157 namespace _connectivity_bits { 158 158 159 159 template <typename Digraph, typename Iterator > … … 189 189 190 190 template <typename Digraph, typename ArcMap> 191 struct StronglyConnectedCut EdgesVisitor : public DfsVisitor<Digraph> {191 struct StronglyConnectedCutArcsVisitor : public DfsVisitor<Digraph> { 192 192 public: 193 193 typedef typename Digraph::Node Node; 194 194 typedef typename Digraph::Arc Arc; 195 195 196 StronglyConnectedCut EdgesVisitor(const Digraph& digraph,197 198 196 StronglyConnectedCutArcsVisitor(const Digraph& digraph, 197 ArcMap& cutMap, 198 int& cutNum) 199 199 : _digraph(digraph), _cutMap(cutMap), _cutNum(cutNum), 200 _compMap(digraph ), _num(0) {201 } 202 203 void st op(const Node&) {200 _compMap(digraph, -1), _num(-1) { 201 } 202 203 void start(const Node&) { 204 204 ++_num; 205 205 } … … 249 249 if (source == INVALID) return true; 250 250 251 using namespace _ topology_bits;251 using namespace _connectivity_bits; 252 252 253 253 typedef DfsVisitor<Digraph> Visitor; … … 266 266 267 267 typedef ReverseDigraph<const Digraph> RDigraph; 268 typedef typename RDigraph::NodeIt RNodeIt; 268 269 RDigraph rdigraph(digraph); 269 270 … … 276 277 rdfs.start(); 277 278 278 for ( NodeIt it(rdigraph); it != INVALID; ++it) {279 for (RNodeIt it(rdigraph); it != INVALID; ++it) { 279 280 if (!rdfs.reached(it)) { 280 281 return false; … … 295 296 /// direction. 296 297 /// 297 /// \param graph The graph.298 /// \param digraph The graph. 298 299 /// \return The number of components 299 300 /// \note By definition, the empty graph has zero … … 303 304 checkConcept<concepts::Digraph, Digraph>(); 304 305 305 using namespace _ topology_bits;306 using namespace _connectivity_bits; 306 307 307 308 typedef typename Digraph::Node Node; … … 375 376 checkConcept<concepts::WriteMap<Node, int>, NodeMap>(); 376 377 377 using namespace _ topology_bits;378 using namespace _connectivity_bits; 378 379 379 380 typedef std::vector<Node> Container; … … 439 440 checkConcept<concepts::WriteMap<Arc, bool>, ArcMap>(); 440 441 441 using namespace _ topology_bits;442 using namespace _connectivity_bits; 442 443 443 444 typedef std::vector<Node> Container; … … 464 465 int cutNum = 0; 465 466 466 typedef StronglyConnectedCut EdgesVisitor<RDigraph, ArcMap> RVisitor;467 typedef StronglyConnectedCutArcsVisitor<RDigraph, ArcMap> RVisitor; 467 468 RVisitor rvisitor(rgraph, cutMap, cutNum); 468 469 … … 479 480 } 480 481 481 namespace _ topology_bits {482 namespace _connectivity_bits { 482 483 483 484 template <typename Digraph> … … 731 732 typedef typename Graph::NodeIt NodeIt; 732 733 733 using namespace _ topology_bits;734 using namespace _connectivity_bits; 734 735 735 736 typedef CountBiNodeConnectedComponentsVisitor<Graph> Visitor; … … 774 775 checkConcept<concepts::WriteMap<Edge, int>, EdgeMap>(); 775 776 776 using namespace _ topology_bits;777 using namespace _connectivity_bits; 777 778 778 779 typedef BiNodeConnectedComponentsVisitor<Graph, EdgeMap> Visitor; … … 814 815 checkConcept<concepts::WriteMap<Node, bool>, NodeMap>(); 815 816 816 using namespace _ topology_bits;817 using namespace _connectivity_bits; 817 818 818 819 typedef BiNodeConnectedCutNodesVisitor<Graph, NodeMap> Visitor; … … 833 834 } 834 835 835 namespace _ topology_bits {836 namespace _connectivity_bits { 836 837 837 838 template <typename Digraph> … … 1054 1055 typedef typename Graph::NodeIt NodeIt; 1055 1056 1056 using namespace _ topology_bits;1057 using namespace _connectivity_bits; 1057 1058 1058 1059 typedef CountBiEdgeConnectedComponentsVisitor<Graph> Visitor; … … 1096 1097 checkConcept<concepts::WriteMap<Node, int>, NodeMap>(); 1097 1098 1098 using namespace _ topology_bits;1099 using namespace _connectivity_bits; 1099 1100 1100 1101 typedef BiEdgeConnectedComponentsVisitor<Graph, NodeMap> Visitor; … … 1137 1138 checkConcept<concepts::WriteMap<Edge, bool>, EdgeMap>(); 1138 1139 1139 using namespace _ topology_bits;1140 using namespace _connectivity_bits; 1140 1141 1141 1142 typedef BiEdgeConnectedCutEdgesVisitor<Graph, EdgeMap> Visitor; … … 1157 1158 1158 1159 1159 namespace _ topology_bits {1160 namespace _connectivity_bits { 1160 1161 1161 1162 template <typename Digraph, typename IntNodeMap> … … 1194 1195 template <typename Digraph, typename NodeMap> 1195 1196 void topologicalSort(const Digraph& graph, NodeMap& order) { 1196 using namespace _ topology_bits;1197 using namespace _connectivity_bits; 1197 1198 1198 1199 checkConcept<concepts::Digraph, Digraph>(); … … 1225 1226 /// that the given graph is DAG. 1226 1227 /// 1227 /// \param graph The graph. It must be directed and acyclic.1228 /// \param digraph The graph. It must be directed and acyclic. 1228 1229 /// \retval order A readable - writable node map. The values will be set 1229 1230 /// from 0 to the number of the nodes in the graph minus one. Each values … … 1235 1236 /// \see dag 1236 1237 template <typename Digraph, typename NodeMap> 1237 bool checkedTopologicalSort(const Digraph& graph, NodeMap& order) {1238 using namespace _ topology_bits;1238 bool checkedTopologicalSort(const Digraph& digraph, NodeMap& order) { 1239 using namespace _connectivity_bits; 1239 1240 1240 1241 checkConcept<concepts::Digraph, Digraph>(); … … 1246 1247 typedef typename Digraph::Arc Arc; 1247 1248 1248 order = constMap<Node, int, -1>(); 1249 for (NodeIt it(digraph); it != INVALID; ++it) { 1250 order.set(it, -1); 1251 } 1249 1252 1250 1253 TopologicalSortVisitor<Digraph, NodeMap> 1251 visitor(order, countNodes( graph));1254 visitor(order, countNodes(digraph)); 1252 1255 1253 1256 DfsVisit<Digraph, TopologicalSortVisitor<Digraph, NodeMap> > 1254 dfs( graph, visitor);1257 dfs(digraph, visitor); 1255 1258 1256 1259 dfs.init(); 1257 for (NodeIt it( graph); it != INVALID; ++it) {1260 for (NodeIt it(digraph); it != INVALID; ++it) { 1258 1261 if (!dfs.reached(it)) { 1259 1262 dfs.addSource(it); 1260 1263 while (!dfs.emptyQueue()) { 1261 Arc edge= dfs.nextArc();1262 Node target = graph.target(edge);1264 Arc arc = dfs.nextArc(); 1265 Node target = digraph.target(arc); 1263 1266 if (dfs.reached(target) && order[target] == -1) { 1264 1267 return false; … … 1280 1283 /// \see acyclic 1281 1284 template <typename Digraph> 1282 bool dag(const Digraph& graph) {1285 bool dag(const Digraph& digraph) { 1283 1286 1284 1287 checkConcept<concepts::Digraph, Digraph>(); … … 1291 1294 1292 1295 typename Dfs<Digraph>::template SetProcessedMap<ProcessedMap>:: 1293 Create dfs( graph);1294 1295 ProcessedMap processed( graph);1296 Create dfs(digraph); 1297 1298 ProcessedMap processed(digraph); 1296 1299 dfs.processedMap(processed); 1297 1300 1298 1301 dfs.init(); 1299 for (NodeIt it( graph); it != INVALID; ++it) {1302 for (NodeIt it(digraph); it != INVALID; ++it) { 1300 1303 if (!dfs.reached(it)) { 1301 1304 dfs.addSource(it); 1302 1305 while (!dfs.emptyQueue()) { 1303 1306 Arc edge = dfs.nextArc(); 1304 Node target = graph.target(edge);1307 Node target = digraph.target(edge); 1305 1308 if (dfs.reached(target) && !processed[target]) { 1306 1309 return false; … … 1381 1384 } 1382 1385 1383 namespace _ topology_bits {1386 namespace _connectivity_bits { 1384 1387 1385 1388 template <typename Digraph> … … 1450 1453 template<typename Graph> 1451 1454 inline bool bipartite(const Graph &graph){ 1452 using namespace _ topology_bits;1455 using namespace _connectivity_bits; 1453 1456 1454 1457 checkConcept<concepts::Graph, Graph>(); … … 1490 1493 template<typename Graph, typename NodeMap> 1491 1494 inline bool bipartitePartitions(const Graph &graph, NodeMap &partMap){ 1492 using namespace _ topology_bits;1495 using namespace _connectivity_bits; 1493 1496 1494 1497 checkConcept<concepts::Graph, Graph>(); … … 1521 1524 /// Returns true when there are not loop edges in the graph. 1522 1525 template <typename Digraph> 1523 bool loopFree(const Digraph& graph) {1524 for (typename Digraph::ArcIt it( graph); it != INVALID; ++it) {1525 if ( graph.source(it) ==graph.target(it)) return false;1526 bool loopFree(const Digraph& digraph) { 1527 for (typename Digraph::ArcIt it(digraph); it != INVALID; ++it) { 1528 if (digraph.source(it) == digraph.target(it)) return false; 1526 1529 } 1527 1530 return true; … … 1532 1535 /// Returns true when there are not parallel edges in the graph. 1533 1536 template <typename Digraph> 1534 bool parallelFree(const Digraph& graph) {1535 typename Digraph::template NodeMap<bool> reached( graph, false);1536 for (typename Digraph::NodeIt n( graph); n != INVALID; ++n) {1537 for (typename Digraph::OutArcIt e(graph, n); e != INVALID; ++e) {1538 if (reached[ graph.target(e)]) return false;1539 reached.set( graph.target(e), true);1540 } 1541 for (typename Digraph::OutArcIt e(graph, n); e != INVALID; ++e) {1542 reached.set( graph.target(e), false);1537 bool parallelFree(const Digraph& digraph) { 1538 typename Digraph::template NodeMap<bool> reached(digraph, false); 1539 for (typename Digraph::NodeIt n(digraph); n != INVALID; ++n) { 1540 for (typename Digraph::OutArcIt a(digraph, n); a != INVALID; ++a) { 1541 if (reached[digraph.target(a)]) return false; 1542 reached.set(digraph.target(a), true); 1543 } 1544 for (typename Digraph::OutArcIt a(digraph, n); a != INVALID; ++a) { 1545 reached.set(digraph.target(a), false); 1543 1546 } 1544 1547 } … … 1552 1555 /// the graph. 1553 1556 template <typename Digraph> 1554 bool simpleDigraph(const Digraph& graph) {1555 typename Digraph::template NodeMap<bool> reached( graph, false);1556 for (typename Digraph::NodeIt n( graph); n != INVALID; ++n) {1557 bool simpleDigraph(const Digraph& digraph) { 1558 typename Digraph::template NodeMap<bool> reached(digraph, false); 1559 for (typename Digraph::NodeIt n(digraph); n != INVALID; ++n) { 1557 1560 reached.set(n, true); 1558 for (typename Digraph::OutArcIt e(graph, n); e != INVALID; ++e) {1559 if (reached[ graph.target(e)]) return false;1560 reached.set( graph.target(e), true);1561 } 1562 for (typename Digraph::OutArcIt e(graph, n); e != INVALID; ++e) {1563 reached.set( graph.target(e), false);1561 for (typename Digraph::OutArcIt a(digraph, n); a != INVALID; ++a) { 1562 if (reached[digraph.target(a)]) return false; 1563 reached.set(digraph.target(a), true); 1564 } 1565 for (typename Digraph::OutArcIt a(digraph, n); a != INVALID; ++a) { 1566 reached.set(digraph.target(a), false); 1564 1567 } 1565 1568 reached.set(n, false); … … 1570 1573 } //namespace lemon 1571 1574 1572 #endif //LEMON_ TOPOLOGY_H1575 #endif //LEMON_CONNECTIVITY_H -
lemon/core.h
r319 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 1171 1171 /// Construct a new ConEdgeIt iterating on the edges that 1172 1172 /// connects nodes \c u and \c v. 1173 ConEdgeIt(const Graph& g, Node u, Node v) : _graph(g) {1174 Parent::operator=(findEdge(_graph, u,v));1173 ConEdgeIt(const Graph& g, Node u, Node v) : _graph(g), _u(u), _v(v) { 1174 Parent::operator=(findEdge(_graph, _u, _v)); 1175 1175 } 1176 1176 … … 1184 1184 /// It increments the iterator and gives back the next edge. 1185 1185 ConEdgeIt& operator++() { 1186 Parent::operator=(findEdge(_graph, _graph.u(*this), 1187 _graph.v(*this), *this)); 1186 Parent::operator=(findEdge(_graph, _u, _v, *this)); 1188 1187 return *this; 1189 1188 } 1190 1189 private: 1191 1190 const Graph& _graph; 1191 Node _u, _v; 1192 1192 }; 1193 1193 -
lemon/counter.h
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/dfs.h
r405 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 1411 1411 } else { 1412 1412 _visitor->leave(s); 1413 _visitor->stop(s); 1413 1414 } 1414 1415 } … … 1626 1627 /// \pre Either \ref run(Node) "run()" or \ref init() 1627 1628 /// must be called before using this function. 1628 bool reached(Node v) { return (*_reached)[v]; }1629 bool reached(Node v) const { return (*_reached)[v]; } 1629 1630 1630 1631 ///@} -
lemon/dijkstra.h
r408 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/dim2.h
r314 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/dimacs.h
r388 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 335 335 typedef typename Digraph::ArcIt ArcIt; 336 336 337 if(!comment.empty()) 337 if(!comment.empty()) 338 338 os << "c " << comment << std::endl; 339 339 os << "p mat " << g.nodeNum() << " " << g.arcNum() << std::endl; -
lemon/elevator.h
r383 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/error.h
r291 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/full_graph.h
r360 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/graph_to_eps.h
r313 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/grid_graph.h
r360 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/hao_orlin.h
r412 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 239 239 if (reached[t]) continue; 240 240 _sets.push_front(std::list<int>()); 241 241 242 242 queue[qlast++] = t; 243 243 reached.set(t, true); … … 539 539 if (reached[t]) continue; 540 540 _sets.push_front(std::list<int>()); 541 541 542 542 queue[qlast++] = t; 543 543 reached.set(t, true); -
lemon/hypercube_graph.h
r372 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/kruskal.h
r220 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/lgf_reader.h
r319 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 871 871 readLine(); 872 872 } 873 line.putback(c); 873 if (readSuccess()) { 874 line.putback(c); 875 } 874 876 } 875 877 … … 1700 1702 readLine(); 1701 1703 } 1702 line.putback(c); 1704 if (readSuccess()) { 1705 line.putback(c); 1706 } 1703 1707 } 1704 1708 … … 2227 2231 readLine(); 2228 2232 } 2229 line.putback(c); 2233 if (readSuccess()) { 2234 line.putback(c); 2235 } 2230 2236 } 2231 2237 … … 2568 2574 readLine(); 2569 2575 } 2570 line.putback(c); 2576 if (readSuccess()) { 2577 line.putback(c); 2578 } 2571 2579 } 2572 2580 -
lemon/lgf_writer.h
r319 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/list_graph.h
r329 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/maps.h
r314 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/math.h
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/max_matching.h
r330 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 417 417 /// \ref init(), \ref greedyInit() or \ref matchingInit() 418 418 /// functions first, then you can start the algorithm with the \ref 419 /// start Parse() or startDense() functions.419 /// startSparse() or startDense() functions. 420 420 421 421 ///@{ -
lemon/nauty_reader.h
r359 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/path.h
r313 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/preflow.h
r393 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 367 367 /// \pre Either \ref run() or \ref init() must be called before 368 368 /// using this function. 369 const Elevator& elevator() {369 const Elevator& elevator() const { 370 370 return *_level; 371 371 } … … 919 919 /// \pre Either \ref run() or \ref init() must be called before 920 920 /// using this function. 921 const FlowMap& flowMap() {921 const FlowMap& flowMap() const { 922 922 return *_flow; 923 923 } -
lemon/random.cc
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/random.h
r378 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/smart_graph.h
r375 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/suurballe.h
r346 r440 1 /* -*- C++-*-1 /* -*- mode: C++; indent-tabs-mode: nil; -*- 2 2 * 3 * This file is a part of LEMON, a generic C++ optimization library 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 52 52 /// 53 53 /// \note For finding node-disjoint paths this algorithm can be used 54 /// with \ref Split DigraphAdaptor.54 /// with \ref SplitNodes. 55 55 #ifdef DOXYGEN 56 56 template <typename Digraph, typename LengthMap> … … 77 77 78 78 private: 79 79 80 80 /// \brief Special implementation of the Dijkstra algorithm 81 81 /// for finding shortest paths in the residual network. … … 107 107 // The processed (i.e. permanently labeled) nodes 108 108 std::vector<Node> _proc_nodes; 109 109 110 110 Node _s; 111 111 Node _t; … … 201 201 // The length map 202 202 const LengthMap &_length; 203 203 204 204 // Arc map of the current flow 205 205 FlowMap *_flow; … … 269 269 /// This function sets the potential map. 270 270 /// 271 /// The potentials provide the dual solution of the underlying 271 /// The potentials provide the dual solution of the underlying 272 272 /// minimum cost flow problem. 273 273 /// … … 331 331 for (NodeIt n(_graph); n != INVALID; ++n) (*_potential)[n] = 0; 332 332 333 _dijkstra = new ResidualDijkstra( _graph, *_flow, _length, 333 _dijkstra = new ResidualDijkstra( _graph, *_flow, _length, 334 334 *_potential, _pred, 335 335 _source, _target ); … … 371 371 return _path_num; 372 372 } 373 373 374 374 /// \brief Compute the paths from the flow. 375 375 /// -
lemon/time_measure.h
r314 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/tolerance.h
r280 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
lemon/unionfind.h
r236 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 1178 1178 if (nodes[nodes[jd].next].size < cmax) { 1179 1179 pushLeft(nodes[jd].next, nodes[jd].left); 1180 if (less(nodes[jd].left, nodes[jd].next)) { 1181 nodes[nodes[jd].next].prio = nodes[nodes[jd].left].prio; 1182 nodes[nodes[jd].next].item = nodes[nodes[jd].left].item; 1180 if (less(jd, nodes[jd].next) || 1181 nodes[jd].item == nodes[pd].item) { 1182 nodes[nodes[jd].next].prio = nodes[jd].prio; 1183 nodes[nodes[jd].next].item = nodes[jd].item; 1183 1184 } 1184 1185 popLeft(pd); … … 1189 1190 popLeft(nodes[jd].next); 1190 1191 pushRight(jd, ld); 1191 if (less(ld, nodes[jd].left)) { 1192 if (less(ld, nodes[jd].left) || 1193 nodes[ld].item == nodes[pd].item) { 1192 1194 nodes[jd].item = nodes[ld].item; 1193 nodes[jd].prio = nodes[ jd].prio;1195 nodes[jd].prio = nodes[ld].prio; 1194 1196 } 1195 1197 if (nodes[nodes[jd].next].item == nodes[ld].item) { … … 1220 1222 if (nodes[nodes[jd].prev].size < cmax) { 1221 1223 pushRight(nodes[jd].prev, nodes[jd].right); 1222 if (less(nodes[jd].right, nodes[jd].prev)) { 1223 nodes[nodes[jd].prev].prio = nodes[nodes[jd].right].prio; 1224 nodes[nodes[jd].prev].item = nodes[nodes[jd].right].item; 1224 if (less(jd, nodes[jd].prev) || 1225 nodes[jd].item == nodes[pd].item) { 1226 nodes[nodes[jd].prev].prio = nodes[jd].prio; 1227 nodes[nodes[jd].prev].item = nodes[jd].item; 1225 1228 } 1226 1229 popRight(pd); … … 1231 1234 popRight(nodes[jd].prev); 1232 1235 pushLeft(jd, ld); 1233 if (less(ld, nodes[jd].right)) { 1236 if (less(ld, nodes[jd].right) || 1237 nodes[ld].item == nodes[pd].item) { 1234 1238 nodes[jd].item = nodes[ld].item; 1235 nodes[jd].prio = nodes[ jd].prio;1239 nodes[jd].prio = nodes[ld].prio; 1236 1240 } 1237 1241 if (nodes[nodes[jd].prev].item == nodes[ld].item) { … … 1251 1255 return comp(nodes[id].prio, nodes[jd].prio); 1252 1256 } 1253 1254 bool equal(int id, int jd) const {1255 return !less(id, jd) && !less(jd, id);1256 }1257 1258 1257 1259 1258 public: … … 1401 1400 push(new_id, right_id); 1402 1401 pushRight(new_id, ~(classes[r].parent)); 1403 setPrio(new_id); 1402 1403 if (less(~classes[r].parent, right_id)) { 1404 nodes[new_id].item = nodes[~classes[r].parent].item; 1405 nodes[new_id].prio = nodes[~classes[r].parent].prio; 1406 } else { 1407 nodes[new_id].item = nodes[right_id].item; 1408 nodes[new_id].prio = nodes[right_id].prio; 1409 } 1404 1410 1405 1411 id = nodes[id].parent; … … 1441 1447 push(new_id, left_id); 1442 1448 pushLeft(new_id, ~(classes[l].parent)); 1443 setPrio(new_id); 1449 1450 if (less(~classes[l].parent, left_id)) { 1451 nodes[new_id].item = nodes[~classes[l].parent].item; 1452 nodes[new_id].prio = nodes[~classes[l].parent].prio; 1453 } else { 1454 nodes[new_id].item = nodes[left_id].item; 1455 nodes[new_id].prio = nodes[left_id].prio; 1456 } 1444 1457 1445 1458 id = nodes[id].parent; -
scripts/chg-len.py
r376 r422 4 4 5 5 from mercurial import ui, hg 6 from mercurial import util 7 8 util.rcpath = lambda : [] 6 9 7 10 if len(sys.argv)>1 and sys.argv[1] in ["-h","--help"]: -
test/CMakeLists.txt
r410 r445 5 5 SET(TESTS 6 6 bfs_test 7 circulation_test 7 8 counter_test 8 9 dfs_test … … 11 12 dim_test 12 13 error_test 14 graph_adaptor_test 13 15 graph_copy_test 14 16 graph_test … … 19 21 maps_test 20 22 max_matching_test 23 radix_sort_test 24 path_test 25 preflow_test 21 26 random_test 22 path_test27 suurballe_test 23 28 time_measure_test 24 29 unionfind_test) -
test/Makefile.am
r418 r445 1 1 EXTRA_DIST += \ 2 test/CMakeLists.txt \ 3 test/min_cost_flow_test.lgf \ 4 test/preflow_graph.lgf 2 test/CMakeLists.txt 5 3 6 4 noinst_HEADERS += \ 7 5 test/graph_test.h \ 8 6 test/test_tools.h 9 7 10 8 check_PROGRAMS += \ 11 9 test/bfs_test \ 12 13 10 test/circulation_test \ 11 test/counter_test \ 14 12 test/dfs_test \ 15 13 test/digraph_test \ 16 14 test/dijkstra_test \ 17 15 test/dim_test \ 18 16 test/error_test \ 19 17 test/graph_adaptor_test \ … … 21 19 test/graph_test \ 22 20 test/graph_utils_test \ 21 test/hao_orlin_test \ 23 22 test/heap_test \ 24 23 test/kruskal_test \ 25 test/hao_orlin_test \ 26 test/maps_test \ 24 test/maps_test \ 27 25 test/max_matching_test \ 28 test/random_test \ 29 test/path_test \ 30 test/preflow_test \ 31 test/suurballe_test \ 32 test/test_tools_fail \ 33 test/test_tools_pass \ 34 test/time_measure_test \ 26 test/path_test \ 27 test/preflow_test \ 28 test/radix_sort_test \ 29 test/random_test \ 30 test/suurballe_test \ 31 test/test_tools_fail \ 32 test/test_tools_pass \ 33 test/time_measure_test \ 35 34 test/unionfind_test 36 35 … … 57 56 test_path_test_SOURCES = test/path_test.cc 58 57 test_preflow_test_SOURCES = test/preflow_test.cc 58 test_radix_sort_test_SOURCES = test/radix_sort_test.cc 59 59 test_suurballe_test_SOURCES = test/suurballe_test.cc 60 60 test_random_test_SOURCES = test/random_test.cc -
test/bfs_test.cc
r293 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/circulation_test.cc
r403 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/counter_test.cc
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/dfs_test.cc
r293 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/digraph_test.cc
r375 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/dijkstra_test.cc
r397 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/dim_test.cc
r253 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/error_test.cc
r277 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/graph_adaptor_test.cc
r416 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 104 104 node_filter[n1] = node_filter[n2] = node_filter[n3] = true; 105 105 arc_filter[a1] = arc_filter[a2] = arc_filter[a3] = true; 106 106 107 107 checkGraphNodeList(adaptor, 3); 108 108 checkGraphArcList(adaptor, 3); … … 197 197 198 198 node_filter[n1] = node_filter[n2] = node_filter[n3] = true; 199 199 200 200 checkGraphNodeList(adaptor, 3); 201 201 checkGraphArcList(adaptor, 3); … … 269 269 270 270 arc_filter[a1] = arc_filter[a2] = arc_filter[a3] = true; 271 271 272 272 checkGraphNodeList(adaptor, 3); 273 273 checkGraphArcList(adaptor, 3); … … 578 578 node_filter[n1] = node_filter[n2] = node_filter[n3] = node_filter[n4] = true; 579 579 edge_filter[e1] = edge_filter[e2] = edge_filter[e3] = edge_filter[e4] = true; 580 580 581 581 checkGraphNodeList(adaptor, 4); 582 582 checkGraphArcList(adaptor, 8); … … 709 709 710 710 node_filter[n1] = node_filter[n2] = node_filter[n3] = node_filter[n4] = true; 711 711 712 712 checkGraphNodeList(adaptor, 4); 713 713 checkGraphArcList(adaptor, 8); … … 808 808 809 809 edge_filter[e1] = edge_filter[e2] = edge_filter[e3] = edge_filter[e4] = true; 810 810 811 811 checkGraphNodeList(adaptor, 4); 812 812 checkGraphArcList(adaptor, 8); -
test/graph_copy_test.cc
r282 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/graph_test.cc
r375 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/graph_test.h
r374 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/graph_utils_test.cc
r220 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/hao_orlin_test.cc
r410 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/heap_test.cc
r293 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/kruskal_test.cc
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/maps_test.cc
r210 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/max_matching_test.cc
r327 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/path_test.cc
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/preflow_test.cc
r394 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 17 17 */ 18 18 19 #include <fstream> 20 #include <string> 19 #include <iostream> 21 20 22 21 #include "test_tools.h" … … 29 28 30 29 using namespace lemon; 30 31 char test_lgf[] = 32 "@nodes\n" 33 "label\n" 34 "0\n" 35 "1\n" 36 "2\n" 37 "3\n" 38 "4\n" 39 "5\n" 40 "6\n" 41 "7\n" 42 "8\n" 43 "9\n" 44 "@arcs\n" 45 " label capacity\n" 46 "0 1 0 20\n" 47 "0 2 1 0\n" 48 "1 1 2 3\n" 49 "1 2 3 8\n" 50 "1 3 4 8\n" 51 "2 5 5 5\n" 52 "3 2 6 5\n" 53 "3 5 7 5\n" 54 "3 6 8 5\n" 55 "4 3 9 3\n" 56 "5 7 10 3\n" 57 "5 6 11 10\n" 58 "5 8 12 10\n" 59 "6 8 13 8\n" 60 "8 9 14 20\n" 61 "8 1 15 5\n" 62 "9 5 16 5\n" 63 "@attributes\n" 64 "source 1\n" 65 "target 8\n"; 31 66 32 67 void checkPreflowCompile() … … 124 159 typedef Preflow<Digraph, CapMap> PType; 125 160 126 std::string f_name;127 if( getenv("srcdir") )128 f_name = std::string(getenv("srcdir"));129 else f_name = ".";130 f_name += "/test/preflow_graph.lgf";131 132 std::ifstream file(f_name.c_str());133 134 check(file, "Input file '" << f_name << "' not found.");135 136 161 Digraph g; 137 162 Node s, t; 138 163 CapMap cap(g); 139 DigraphReader<Digraph>(g,file). 164 std::istringstream input(test_lgf); 165 DigraphReader<Digraph>(g,input). 140 166 arcMap("capacity", cap). 141 167 node("source",s). -
test/random_test.cc
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/suurballe_test.cc
r346 r440 1 /* -*- C++-*-1 /* -*- mode: C++; indent-tabs-mode: nil; -*- 2 2 * 3 * This file is a part of LEMON, a generic C++ optimization library 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 18 18 19 19 #include <iostream> 20 #include <fstream>21 20 22 21 #include <lemon/list_graph.h> … … 29 28 using namespace lemon; 30 29 30 char test_lgf[] = 31 "@nodes\n" 32 "label supply1 supply2 supply3\n" 33 "1 0 20 27\n" 34 "2 0 -4 0\n" 35 "3 0 0 0\n" 36 "4 0 0 0\n" 37 "5 0 9 0\n" 38 "6 0 -6 0\n" 39 "7 0 0 0\n" 40 "8 0 0 0\n" 41 "9 0 3 0\n" 42 "10 0 -2 0\n" 43 "11 0 0 0\n" 44 "12 0 -20 -27\n" 45 "@arcs\n" 46 " cost capacity lower1 lower2\n" 47 " 1 2 70 11 0 8\n" 48 " 1 3 150 3 0 1\n" 49 " 1 4 80 15 0 2\n" 50 " 2 8 80 12 0 0\n" 51 " 3 5 140 5 0 3\n" 52 " 4 6 60 10 0 1\n" 53 " 4 7 80 2 0 0\n" 54 " 4 8 110 3 0 0\n" 55 " 5 7 60 14 0 0\n" 56 " 5 11 120 12 0 0\n" 57 " 6 3 0 3 0 0\n" 58 " 6 9 140 4 0 0\n" 59 " 6 10 90 8 0 0\n" 60 " 7 1 30 5 0 0\n" 61 " 8 12 60 16 0 4\n" 62 " 9 12 50 6 0 0\n" 63 "10 12 70 13 0 5\n" 64 "10 2 100 7 0 0\n" 65 "10 7 60 10 0 0\n" 66 "11 10 20 14 0 6\n" 67 "12 11 30 10 0 0\n" 68 "@attributes\n" 69 "source 1\n" 70 "target 12\n" 71 "@end\n"; 72 31 73 // Check the feasibility of the flow 32 74 template <typename Digraph, typename FlowMap> 33 bool checkFlow( const Digraph& gr, const FlowMap& flow, 75 bool checkFlow( const Digraph& gr, const FlowMap& flow, 34 76 typename Digraph::Node s, typename Digraph::Node t, 35 77 int value ) … … 54 96 55 97 // Check the optimalitiy of the flow 56 template < typename Digraph, typename CostMap, 98 template < typename Digraph, typename CostMap, 57 99 typename FlowMap, typename PotentialMap > 58 100 bool checkOptimality( const Digraph& gr, const CostMap& cost, … … 97 139 Node source, target; 98 140 99 std::string fname; 100 if(getenv("srcdir")) 101 fname = std::string(getenv("srcdir")); 102 else fname = "."; 103 fname += "/test/min_cost_flow_test.lgf"; 104 105 std::ifstream input(fname.c_str()); 106 check(input, "Input file '" << fname << "' not found"); 141 std::istringstream input(test_lgf); 107 142 DigraphReader<ListDigraph>(digraph, input). 108 143 arcMap("cost", length). … … 110 145 node("target", target). 111 146 run(); 112 input.close(); 113 147 114 148 // Find 2 paths 115 149 { … … 119 153 "The flow is not feasible"); 120 154 check(suurballe.totalLength() == 510, "The flow is not optimal"); 121 check(checkOptimality(digraph, length, suurballe.flowMap(), 155 check(checkOptimality(digraph, length, suurballe.flowMap(), 122 156 suurballe.potentialMap()), 123 157 "Wrong potentials"); … … 134 168 "The flow is not feasible"); 135 169 check(suurballe.totalLength() == 1040, "The flow is not optimal"); 136 check(checkOptimality(digraph, length, suurballe.flowMap(), 170 check(checkOptimality(digraph, length, suurballe.flowMap(), 137 171 suurballe.potentialMap()), 138 172 "Wrong potentials"); … … 149 183 "The flow is not feasible"); 150 184 check(suurballe.totalLength() == 1040, "The flow is not optimal"); 151 check(checkOptimality(digraph, length, suurballe.flowMap(), 185 check(checkOptimality(digraph, length, suurballe.flowMap(), 152 186 suurballe.potentialMap()), 153 187 "Wrong potentials"); -
test/test_tools.h
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/test_tools_fail.cc
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/test_tools_pass.cc
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/time_measure_test.cc
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
test/unionfind_test.cc
r209 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). -
tools/dimacs-to-lgf.cc
r387 r440 3 3 * This file is a part of LEMON, a generic C++ optimization library. 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2009 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES).
Note: See TracChangeset
for help on using the changeset viewer.