# HG changeset patch
# User Peter Kovacs <kpeter@inf.elte.hu>
# Date 1266681103 -3600
# Node ID 9d380bf271941ce00c6f0edb200f9a81a71959a5
# Parent c841ae1aca299b7274d51c506871c57b73f1311a
Use 'long long' flow cost in dimacs-solver.cc (#347)
diff --git a/tools/dimacs-solver.cc b/tools/dimacs-solver.cc
a
|
b
|
|
91 | 91 | if(report) std::cerr << "\nMax flow value: " << pre.flowValue() << '\n'; |
92 | 92 | } |
93 | 93 | |
94 | | template<class Value> |
| 94 | template<class Value, class LargeValue> |
95 | 95 | void solve_min(ArgParser &ap, std::istream &is, std::ostream &, |
96 | 96 | Value infty, DimacsDescriptor &desc) |
97 | 97 | { |
… |
… |
|
127 | 127 | if (report) { |
128 | 128 | std::cerr << "Run NetworkSimplex: " << ti << "\n\n"; |
129 | 129 | std::cerr << "Feasible flow: " << (res ? "found" : "not found") << '\n'; |
130 | | if (res) std::cerr << "Min flow cost: " << ns.totalCost() << '\n'; |
| 130 | if (res) std::cerr << "Min flow cost: " |
| 131 | << ns.template totalCost<LargeValue>() << '\n'; |
131 | 132 | } |
132 | 133 | } |
133 | 134 | |
… |
… |
|
151 | 152 | } |
152 | 153 | |
153 | 154 | |
154 | | template<class Value> |
| 155 | template<class Value, class LargeValue> |
155 | 156 | void solve(ArgParser &ap, std::istream &is, std::ostream &os, |
156 | 157 | DimacsDescriptor &desc) |
157 | 158 | { |
… |
… |
|
169 | 170 | switch(desc.type) |
170 | 171 | { |
171 | 172 | case DimacsDescriptor::MIN: |
172 | | solve_min<Value>(ap,is,os,infty,desc); |
| 173 | solve_min<Value, LargeValue>(ap,is,os,infty,desc); |
173 | 174 | break; |
174 | 175 | case DimacsDescriptor::MAX: |
175 | 176 | solve_max<Value>(ap,is,os,infty,desc); |
… |
… |
|
264 | 265 | } |
265 | 266 | |
266 | 267 | if(ap.given("double")) |
267 | | solve<double>(ap,is,os,desc); |
| 268 | solve<double, double>(ap,is,os,desc); |
268 | 269 | else if(ap.given("ldouble")) |
269 | | solve<long double>(ap,is,os,desc); |
| 270 | solve<long double, long double>(ap,is,os,desc); |
270 | 271 | #ifdef LEMON_HAVE_LONG_LONG |
271 | 272 | else if(ap.given("long")) |
272 | | solve<long long>(ap,is,os,desc); |
| 273 | solve<long long, long long>(ap,is,os,desc); |
| 274 | else solve<int, long long>(ap,is,os,desc); |
| 275 | #else |
| 276 | else solve<int, long>(ap,is,os,desc); |
273 | 277 | #endif |
274 | | else solve<int>(ap,is,os,desc); |
275 | 278 | |
276 | 279 | return 0; |
277 | 280 | } |