0
24
0
2
2
1
1
1
1
1
1
4
4
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
... | ... |
@@ -66,12 +66,12 @@ |
66 | 66 |
This directory contains the concept descriptors and concept checking tools. |
67 | 67 |
For more information see the \ref concept "Concepts" module. |
68 | 68 |
*/ |
69 | 69 |
|
70 | 70 |
/** |
71 | 71 |
\dir bits |
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. |
77 | 77 |
*/ |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
... | ... |
@@ -298,17 +298,17 @@ |
298 | 298 |
This group describes the skeletons and concept checking classes of LEMON's |
299 | 299 |
graph structures and helper classes used to implement these. |
300 | 300 |
*/ |
301 | 301 |
|
302 | 302 |
/** |
303 | 303 |
@defgroup map_concepts Map Concepts |
304 | 304 |
@ingroup concept |
305 | 305 |
\brief Skeleton and concept checking classes for maps |
306 |
|
|
306 |
|
|
307 | 307 |
This group describes the skeletons and concept checking classes of maps. |
308 | 308 |
*/ |
309 | 309 |
|
310 | 310 |
/** |
311 | 311 |
\anchor demoprograms |
312 | 312 |
|
313 | 313 |
@defgroup demos Demo programs |
314 | 314 |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
... | ... |
@@ -91,17 +91,17 @@ |
91 | 91 |
|
92 | 92 |
std::string getWinFormattedDate() |
93 | 93 |
{ |
94 | 94 |
std::ostringstream os; |
95 | 95 |
#ifdef WIN32 |
96 | 96 |
SYSTEMTIME time; |
97 | 97 |
GetSystemTime(&time); |
98 | 98 |
char buf1[11], buf2[9], buf3[5]; |
99 |
|
|
99 |
if (GetDateFormat(MY_LOCALE, 0, &time, |
|
100 | 100 |
("ddd MMM dd"), buf1, 11) && |
101 | 101 |
GetTimeFormat(MY_LOCALE, 0, &time, |
102 | 102 |
("HH':'mm':'ss"), buf2, 9) && |
103 | 103 |
GetDateFormat(MY_LOCALE, 0, &time, |
104 | 104 |
("yyyy"), buf3, 5)) { |
105 | 105 |
os << buf1 << ' ' << buf2 << ' ' << buf3; |
106 | 106 |
} |
107 | 107 |
else os << "unknown"; |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
... | ... |
@@ -386,17 +386,17 @@ |
386 | 386 |
}; |
387 | 387 |
|
388 | 388 |
} |
389 | 389 |
|
390 | 390 |
template <typename Digraph> |
391 | 391 |
class DigraphReader; |
392 | 392 |
|
393 | 393 |
template <typename Digraph> |
394 |
DigraphReader<Digraph> digraphReader(Digraph& digraph, |
|
394 |
DigraphReader<Digraph> digraphReader(Digraph& digraph, |
|
395 | 395 |
std::istream& is = std::cin); |
396 | 396 |
template <typename Digraph> |
397 | 397 |
DigraphReader<Digraph> digraphReader(Digraph& digraph, const std::string& fn); |
398 | 398 |
template <typename Digraph> |
399 | 399 |
DigraphReader<Digraph> digraphReader(Digraph& digraph, const char *fn); |
400 | 400 |
|
401 | 401 |
/// \ingroup lemon_io |
402 | 402 |
/// |
... | ... |
@@ -558,17 +558,17 @@ |
558 | 558 |
|
559 | 559 |
} |
560 | 560 |
|
561 | 561 |
private: |
562 | 562 |
|
563 | 563 |
template <typename DGR> |
564 | 564 |
friend DigraphReader<DGR> digraphReader(DGR& digraph, std::istream& is); |
565 | 565 |
template <typename DGR> |
566 |
friend DigraphReader<DGR> digraphReader(DGR& digraph, |
|
566 |
friend DigraphReader<DGR> digraphReader(DGR& digraph, |
|
567 | 567 |
const std::string& fn); |
568 | 568 |
template <typename DGR> |
569 | 569 |
friend DigraphReader<DGR> digraphReader(DGR& digraph, const char *fn); |
570 | 570 |
|
571 | 571 |
DigraphReader(DigraphReader& other) |
572 | 572 |
: _is(other._is), local_is(other.local_is), _digraph(other._digraph), |
573 | 573 |
_use_nodes(other._use_nodes), _use_arcs(other._use_arcs), |
574 | 574 |
_skip_nodes(other._skip_nodes), _skip_arcs(other._skip_arcs) { |
... | ... |
@@ -1224,19 +1224,19 @@ |
1224 | 1224 |
template <typename Digraph> |
1225 | 1225 |
DigraphReader<Digraph> digraphReader(Digraph& digraph, const char* fn) { |
1226 | 1226 |
DigraphReader<Digraph> tmp(digraph, fn); |
1227 | 1227 |
return tmp; |
1228 | 1228 |
} |
1229 | 1229 |
|
1230 | 1230 |
template <typename Graph> |
1231 | 1231 |
class GraphReader; |
1232 |
|
|
1232 |
|
|
1233 | 1233 |
template <typename Graph> |
1234 |
GraphReader<Graph> graphReader(Graph& graph, |
|
1234 |
GraphReader<Graph> graphReader(Graph& graph, |
|
1235 | 1235 |
std::istream& is = std::cin); |
1236 | 1236 |
template <typename Graph> |
1237 | 1237 |
GraphReader<Graph> graphReader(Graph& graph, const std::string& fn); |
1238 | 1238 |
template <typename Graph> |
1239 | 1239 |
GraphReader<Graph> graphReader(Graph& graph, const char *fn); |
1240 | 1240 |
|
1241 | 1241 |
/// \ingroup lemon_io |
1242 | 1242 |
/// |
... | ... |
@@ -1361,17 +1361,17 @@ |
1361 | 1361 |
} |
1362 | 1362 |
|
1363 | 1363 |
} |
1364 | 1364 |
|
1365 | 1365 |
private: |
1366 | 1366 |
template <typename GR> |
1367 | 1367 |
friend GraphReader<GR> graphReader(GR& graph, std::istream& is); |
1368 | 1368 |
template <typename GR> |
1369 |
friend GraphReader<GR> graphReader(GR& graph, const std::string& fn); |
|
1369 |
friend GraphReader<GR> graphReader(GR& graph, const std::string& fn); |
|
1370 | 1370 |
template <typename GR> |
1371 | 1371 |
friend GraphReader<GR> graphReader(GR& graph, const char *fn); |
1372 | 1372 |
|
1373 | 1373 |
GraphReader(GraphReader& other) |
1374 | 1374 |
: _is(other._is), local_is(other.local_is), _graph(other._graph), |
1375 | 1375 |
_use_nodes(other._use_nodes), _use_edges(other._use_edges), |
1376 | 1376 |
_skip_nodes(other._skip_nodes), _skip_edges(other._skip_edges) { |
1377 | 1377 |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
... | ... |
@@ -501,17 +501,17 @@ |
501 | 501 |
if (local_os) { |
502 | 502 |
delete _os; |
503 | 503 |
} |
504 | 504 |
} |
505 | 505 |
|
506 | 506 |
private: |
507 | 507 |
|
508 | 508 |
template <typename DGR> |
509 |
friend DigraphWriter<DGR> digraphWriter(const DGR& digraph, |
|
509 |
friend DigraphWriter<DGR> digraphWriter(const DGR& digraph, |
|
510 | 510 |
std::ostream& os); |
511 | 511 |
template <typename DGR> |
512 | 512 |
friend DigraphWriter<DGR> digraphWriter(const DGR& digraph, |
513 | 513 |
const std::string& fn); |
514 | 514 |
template <typename DGR> |
515 | 515 |
friend DigraphWriter<DGR> digraphWriter(const DGR& digraph, |
516 | 516 |
const char *fn); |
517 | 517 |
|
... | ... |
@@ -1077,17 +1077,17 @@ |
1077 | 1077 |
friend GraphWriter<GR> graphWriter(const GR& graph, |
1078 | 1078 |
std::ostream& os); |
1079 | 1079 |
template <typename GR> |
1080 | 1080 |
friend GraphWriter<GR> graphWriter(const GR& graph, |
1081 | 1081 |
const std::string& fn); |
1082 | 1082 |
template <typename GR> |
1083 | 1083 |
friend GraphWriter<GR> graphWriter(const GR& graph, |
1084 | 1084 |
const char *fn); |
1085 |
|
|
1085 |
|
|
1086 | 1086 |
GraphWriter(GraphWriter& other) |
1087 | 1087 |
: _os(other._os), local_os(other.local_os), _graph(other._graph), |
1088 | 1088 |
_skip_nodes(other._skip_nodes), _skip_edges(other._skip_edges) { |
1089 | 1089 |
|
1090 | 1090 |
other._os = 0; |
1091 | 1091 |
other.local_os = false; |
1092 | 1092 |
|
1093 | 1093 |
_node_index.swap(other._node_index); |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
... | ... |
@@ -835,18 +835,18 @@ |
835 | 835 |
class Arc { |
836 | 836 |
friend class ListGraphBase; |
837 | 837 |
protected: |
838 | 838 |
|
839 | 839 |
int id; |
840 | 840 |
explicit Arc(int pid) { id = pid;} |
841 | 841 |
|
842 | 842 |
public: |
843 |
operator Edge() const { |
|
844 |
return id != -1 ? edgeFromId(id / 2) : INVALID; |
|
843 |
operator Edge() const { |
|
844 |
return id != -1 ? edgeFromId(id / 2) : INVALID; |
|
845 | 845 |
} |
846 | 846 |
|
847 | 847 |
Arc() {} |
848 | 848 |
Arc (Invalid) { id = -1; } |
849 | 849 |
bool operator==(const Arc& arc) const {return id == arc.id;} |
850 | 850 |
bool operator!=(const Arc& arc) const {return id != arc.id;} |
851 | 851 |
bool operator<(const Arc& arc) const {return id < arc.id;} |
852 | 852 |
}; |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
... | ... |
@@ -961,30 +961,30 @@ |
961 | 961 |
template <typename From, typename To> |
962 | 962 |
struct PathCopySelectorBackward<From, To, true> { |
963 | 963 |
static void copy(const From& from, To& to) { |
964 | 964 |
to.clear(); |
965 | 965 |
to.buildRev(from); |
966 | 966 |
} |
967 | 967 |
}; |
968 | 968 |
|
969 |
|
|
969 |
|
|
970 | 970 |
template <typename From, typename To, |
971 | 971 |
bool revEnable = RevPathTagIndicator<From>::value> |
972 | 972 |
struct PathCopySelector { |
973 | 973 |
static void copy(const From& from, To& to) { |
974 | 974 |
PathCopySelectorForward<From, To>::copy(from, to); |
975 |
} |
|
975 |
} |
|
976 | 976 |
}; |
977 | 977 |
|
978 | 978 |
template <typename From, typename To> |
979 | 979 |
struct PathCopySelector<From, To, true> { |
980 | 980 |
static void copy(const From& from, To& to) { |
981 | 981 |
PathCopySelectorBackward<From, To>::copy(from, to); |
982 |
} |
|
982 |
} |
|
983 | 983 |
}; |
984 | 984 |
|
985 | 985 |
} |
986 | 986 |
|
987 | 987 |
|
988 | 988 |
/// \brief Make a copy of a path. |
989 | 989 |
/// |
990 | 990 |
/// This function makes a copy of a path. |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
... | ... |
@@ -461,18 +461,18 @@ |
461 | 461 |
class Arc { |
462 | 462 |
friend class SmartGraphBase; |
463 | 463 |
protected: |
464 | 464 |
|
465 | 465 |
int _id; |
466 | 466 |
explicit Arc(int id) { _id = id;} |
467 | 467 |
|
468 | 468 |
public: |
469 |
operator Edge() const { |
|
470 |
return _id != -1 ? edgeFromId(_id / 2) : INVALID; |
|
469 |
operator Edge() const { |
|
470 |
return _id != -1 ? edgeFromId(_id / 2) : INVALID; |
|
471 | 471 |
} |
472 | 472 |
|
473 | 473 |
Arc() {} |
474 | 474 |
Arc (Invalid) { _id = -1; } |
475 | 475 |
bool operator==(const Arc& arc) const {return _id == arc._id;} |
476 | 476 |
bool operator!=(const Arc& arc) const {return _id != arc._id;} |
477 | 477 |
bool operator<(const Arc& arc) const {return _id < arc._id;} |
478 | 478 |
}; |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
... | ... |
@@ -1184,17 +1184,17 @@ |
1184 | 1184 |
} |
1185 | 1185 |
popLeft(pd); |
1186 | 1186 |
deleteNode(jd); |
1187 | 1187 |
jd = pd; |
1188 | 1188 |
} else { |
1189 | 1189 |
int ld = nodes[nodes[jd].next].left; |
1190 | 1190 |
popLeft(nodes[jd].next); |
1191 | 1191 |
pushRight(jd, ld); |
1192 |
if (less(ld, nodes[jd].left) || |
|
1192 |
if (less(ld, nodes[jd].left) || |
|
1193 | 1193 |
nodes[ld].item == nodes[pd].item) { |
1194 | 1194 |
nodes[jd].item = nodes[ld].item; |
1195 | 1195 |
nodes[jd].prio = nodes[ld].prio; |
1196 | 1196 |
} |
1197 | 1197 |
if (nodes[nodes[jd].next].item == nodes[ld].item) { |
1198 | 1198 |
setPrio(nodes[jd].next); |
1199 | 1199 |
} |
1200 | 1200 |
jd = nodes[jd].left; |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
... | ... |
@@ -179,17 +179,17 @@ |
179 | 179 |
} |
180 | 180 |
} |
181 | 181 |
} |
182 | 182 |
|
183 | 183 |
{ |
184 | 184 |
Dfs<Digraph> dfs(G); |
185 | 185 |
check(dfs.run(s1,t1) && dfs.reached(t1),"Node 3 is reachable from Node 6."); |
186 | 186 |
} |
187 |
|
|
187 |
|
|
188 | 188 |
{ |
189 | 189 |
NullMap<Node,Arc> myPredMap; |
190 | 190 |
dfs(G).predMap(myPredMap).run(s); |
191 | 191 |
} |
192 | 192 |
} |
193 | 193 |
|
194 | 194 |
int main() |
195 | 195 |
{ |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
... | ... |
@@ -65,17 +65,17 @@ |
65 | 65 |
ListDigraph::NodeMap<SmartDigraph::Node> ncr(to); |
66 | 66 |
ListDigraph::ArcMap<SmartDigraph::Arc> ecr(to); |
67 | 67 |
|
68 | 68 |
digraphCopy(from, to). |
69 | 69 |
nodeMap(fnm, tnm).arcMap(fam, tam). |
70 | 70 |
nodeRef(nr).arcRef(er). |
71 | 71 |
nodeCrossRef(ncr).arcCrossRef(ecr). |
72 | 72 |
node(fn, tn).arc(fa, ta).run(); |
73 |
|
|
73 |
|
|
74 | 74 |
check(countNodes(from) == countNodes(to), "Wrong copy."); |
75 | 75 |
check(countArcs(from) == countArcs(to), "Wrong copy."); |
76 | 76 |
|
77 | 77 |
for (SmartDigraph::NodeIt it(from); it != INVALID; ++it) { |
78 | 78 |
check(ncr[nr[it]] == it, "Wrong copy."); |
79 | 79 |
check(fnm[it] == tnm[nr[it]], "Wrong copy."); |
80 | 80 |
} |
81 | 81 |
|
... | ... |
@@ -93,17 +93,17 @@ |
93 | 93 |
for (ListDigraph::ArcIt it(to); it != INVALID; ++it) { |
94 | 94 |
check(er[ecr[it]] == it, "Wrong copy."); |
95 | 95 |
} |
96 | 96 |
check(tn == nr[fn], "Wrong copy."); |
97 | 97 |
check(ta == er[fa], "Wrong copy."); |
98 | 98 |
|
99 | 99 |
// Test repeated copy |
100 | 100 |
digraphCopy(from, to).run(); |
101 |
|
|
101 |
|
|
102 | 102 |
check(countNodes(from) == countNodes(to), "Wrong copy."); |
103 | 103 |
check(countArcs(from) == countArcs(to), "Wrong copy."); |
104 | 104 |
} |
105 | 105 |
|
106 | 106 |
void graph_copy_test() { |
107 | 107 |
const int nn = 10; |
108 | 108 |
|
109 | 109 |
// Build a graph |
... | ... |
@@ -195,17 +195,17 @@ |
195 | 195 |
check(er[ecr[it]] == it, "Wrong copy."); |
196 | 196 |
} |
197 | 197 |
check(tn == nr[fn], "Wrong copy."); |
198 | 198 |
check(ta == ar[fa], "Wrong copy."); |
199 | 199 |
check(te == er[fe], "Wrong copy."); |
200 | 200 |
|
201 | 201 |
// Test repeated copy |
202 | 202 |
graphCopy(from, to).run(); |
203 |
|
|
203 |
|
|
204 | 204 |
check(countNodes(from) == countNodes(to), "Wrong copy."); |
205 | 205 |
check(countEdges(from) == countEdges(to), "Wrong copy."); |
206 | 206 |
check(countArcs(from) == countArcs(to), "Wrong copy."); |
207 | 207 |
} |
208 | 208 |
|
209 | 209 |
|
210 | 210 |
int main() { |
211 | 211 |
digraph_copy_test(); |
... | ... |
@@ -58,20 +58,20 @@ |
58 | 58 |
"label\n" |
59 | 59 |
"0\n" |
60 | 60 |
"1\n" |
61 | 61 |
"@arcs\n" |
62 | 62 |
" label -\n" |
63 | 63 |
"0 1\n"; |
64 | 64 |
|
65 | 65 |
|
66 |
int main() |
|
66 |
int main() |
|
67 | 67 |
{ |
68 | 68 |
{ |
69 |
ListDigraph d; |
|
69 |
ListDigraph d; |
|
70 | 70 |
ListDigraph::Node s,t; |
71 | 71 |
ListDigraph::ArcMap<int> label(d); |
72 | 72 |
std::istringstream input(test_lgf); |
73 | 73 |
digraphReader(d, input). |
74 | 74 |
node("source", s). |
75 | 75 |
node("target", t). |
76 | 76 |
arcMap("label", label). |
77 | 77 |
run(); |
... | ... |
@@ -88,41 +88,41 @@ |
88 | 88 |
node("target", t). |
89 | 89 |
edgeMap("label", label). |
90 | 90 |
run(); |
91 | 91 |
check(countNodes(g) == 2,"There should be 2 nodes"); |
92 | 92 |
check(countEdges(g) == 2,"There should be 2 arcs"); |
93 | 93 |
} |
94 | 94 |
|
95 | 95 |
{ |
96 |
ListDigraph d; |
|
96 |
ListDigraph d; |
|
97 | 97 |
std::istringstream input(test_lgf_nomap); |
98 | 98 |
digraphReader(d, input). |
99 | 99 |
run(); |
100 | 100 |
check(countNodes(d) == 2,"There should be 2 nodes"); |
101 | 101 |
check(countArcs(d) == 1,"There should be 1 arc"); |
102 | 102 |
} |
103 | 103 |
{ |
104 | 104 |
ListGraph g; |
105 | 105 |
std::istringstream input(test_lgf_nomap); |
106 | 106 |
graphReader(g, input). |
107 | 107 |
run(); |
108 | 108 |
check(countNodes(g) == 2,"There should be 2 nodes"); |
109 | 109 |
check(countEdges(g) == 1,"There should be 1 edge"); |
110 | 110 |
} |
111 | 111 |
|
112 | 112 |
{ |
113 |
ListDigraph d; |
|
113 |
ListDigraph d; |
|
114 | 114 |
std::istringstream input(test_lgf_bad1); |
115 | 115 |
bool ok=false; |
116 | 116 |
try { |
117 | 117 |
digraphReader(d, input). |
118 | 118 |
run(); |
119 | 119 |
} |
120 |
catch (FormatError& error) |
|
120 |
catch (FormatError& error) |
|
121 | 121 |
{ |
122 | 122 |
ok = true; |
123 | 123 |
} |
124 | 124 |
check(ok,"FormatError exception should have occured"); |
125 | 125 |
} |
126 | 126 |
{ |
127 | 127 |
ListGraph g; |
128 | 128 |
std::istringstream input(test_lgf_bad1); |
... | ... |
@@ -134,17 +134,17 @@ |
134 | 134 |
catch (FormatError& error) |
135 | 135 |
{ |
136 | 136 |
ok = true; |
137 | 137 |
} |
138 | 138 |
check(ok,"FormatError exception should have occured"); |
139 | 139 |
} |
140 | 140 |
|
141 | 141 |
{ |
142 |
ListDigraph d; |
|
142 |
ListDigraph d; |
|
143 | 143 |
std::istringstream input(test_lgf_bad2); |
144 | 144 |
bool ok=false; |
145 | 145 |
try { |
146 | 146 |
digraphReader(d, input). |
147 | 147 |
run(); |
148 | 148 |
} |
149 | 149 |
catch (FormatError& error) |
150 | 150 |
{ |
1 | 1 |
/* -*- mode: C++; indent-tabs-mode: nil; -*- |
2 | 2 |
* |
3 | 3 |
* This file is a part of LEMON, a generic C++ optimization library. |
4 | 4 |
* |
5 |
* Copyright (C) 2003- |
|
5 |
* Copyright (C) 2003-2011 |
|
6 | 6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
7 | 7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
8 | 8 |
* |
9 | 9 |
* Permission to use, modify and distribute this software is granted |
10 | 10 |
* provided that this copyright notice appears in all copies. For |
11 | 11 |
* precise terms see the accompanying LICENSE file. |
12 | 12 |
* |
13 | 13 |
* This software is provided "AS IS" with no warranty of any kind, |
... | ... |
@@ -64,18 +64,20 @@ |
64 | 64 |
{ |
65 | 65 |
// Map concepts |
66 | 66 |
checkConcept<ReadMap<A,B>, ReadMap<A,B> >(); |
67 | 67 |
checkConcept<ReadMap<A,C>, ReadMap<A,C> >(); |
68 | 68 |
checkConcept<WriteMap<A,B>, WriteMap<A,B> >(); |
69 | 69 |
checkConcept<WriteMap<A,C>, WriteMap<A,C> >(); |
70 | 70 |
checkConcept<ReadWriteMap<A,B>, ReadWriteMap<A,B> >(); |
71 | 71 |
checkConcept<ReadWriteMap<A,C>, ReadWriteMap<A,C> >(); |
72 |
checkConcept<ReferenceMap<A,B,B&,const B&>, ReferenceMap<A,B,B&,const B&> >(); |
|
73 |
checkConcept<ReferenceMap<A,C,C&,const C&>, ReferenceMap<A,C,C&,const C&> >(); |
|
72 |
checkConcept<ReferenceMap<A,B,B&,const B&>, |
|
73 |
ReferenceMap<A,B,B&,const B&> >(); |
|
74 |
checkConcept<ReferenceMap<A,C,C&,const C&>, |
|
75 |
ReferenceMap<A,C,C&,const C&> >(); |
|
74 | 76 |
|
75 | 77 |
// NullMap |
76 | 78 |
{ |
77 | 79 |
checkConcept<ReadWriteMap<A,B>, NullMap<A,B> >(); |
78 | 80 |
NullMap<A,B> map1; |
79 | 81 |
NullMap<A,B> map2 = map1; |
80 | 82 |
map1 = nullMap<A,B>(); |
81 | 83 |
} |
... | ... |
@@ -194,17 +196,18 @@ |
194 | 196 |
{ |
195 | 197 |
checkConcept<ReadMap<A,B>, FunctorToMap<F,A,B> >(); |
196 | 198 |
checkConcept<ReadMap<A,B>, FunctorToMap<F> >(); |
197 | 199 |
FunctorToMap<F> map1; |
198 | 200 |
FunctorToMap<F> map2 = FunctorToMap<F>(F()); |
199 | 201 |
B b = functorToMap(F())[A()]; |
200 | 202 |
|
201 | 203 |
checkConcept<ReadMap<A,B>, MapToFunctor<ReadMap<A,B> > >(); |
202 |
MapToFunctor<ReadMap<A,B> > map = |
|
204 |
MapToFunctor<ReadMap<A,B> > map = |
|
205 |
MapToFunctor<ReadMap<A,B> >(ReadMap<A,B>()); |
|
203 | 206 |
|
204 | 207 |
check(functorToMap(&func)[A()] == 3, |
205 | 208 |
"Something is wrong with FunctorToMap"); |
206 | 209 |
check(mapToFunctor(constMap<A,int>(2))(A()) == 2, |
207 | 210 |
"Something is wrong with MapToFunctor"); |
208 | 211 |
check(mapToFunctor(functorToMap(&func))(A()) == 3 && |
209 | 212 |
mapToFunctor(functorToMap(&func))[A()] == 3, |
210 | 213 |
"Something is wrong with FunctorToMap or MapToFunctor"); |
0 comments (0 inline)