| ... | ... |
@@ -54,49 +54,49 @@ |
| 54 | 54 |
int index(const Node& node) const { return node._id; }
|
| 55 | 55 |
|
| 56 | 56 |
Arc arc(const Node& s, const Node& t) const {
|
| 57 | 57 |
return Arc(s._id * _node_num + t._id); |
| 58 | 58 |
} |
| 59 | 59 |
|
| 60 | 60 |
int nodeNum() const { return _node_num; }
|
| 61 | 61 |
int arcNum() const { return _arc_num; }
|
| 62 | 62 |
|
| 63 | 63 |
int maxNodeId() const { return _node_num - 1; }
|
| 64 | 64 |
int maxArcId() const { return _arc_num - 1; }
|
| 65 | 65 |
|
| 66 | 66 |
Node source(Arc arc) const { return arc._id / _node_num; }
|
| 67 | 67 |
Node target(Arc arc) const { return arc._id % _node_num; }
|
| 68 | 68 |
|
| 69 | 69 |
static int id(Node node) { return node._id; }
|
| 70 | 70 |
static int id(Arc arc) { return arc._id; }
|
| 71 | 71 |
|
| 72 | 72 |
static Node nodeFromId(int id) { return Node(id);}
|
| 73 | 73 |
static Arc arcFromId(int id) { return Arc(id);}
|
| 74 | 74 |
|
| 75 | 75 |
typedef True FindArcTag; |
| 76 | 76 |
|
| 77 | 77 |
Arc findArc(Node s, Node t, Arc prev = INVALID) const {
|
| 78 |
return prev |
|
| 78 |
return prev == INVALID ? arc(s, t) : INVALID; |
|
| 79 | 79 |
} |
| 80 | 80 |
|
| 81 | 81 |
class Node {
|
| 82 | 82 |
friend class FullDigraphBase; |
| 83 | 83 |
|
| 84 | 84 |
protected: |
| 85 | 85 |
int _id; |
| 86 | 86 |
Node(int id) : _id(id) {}
|
| 87 | 87 |
public: |
| 88 | 88 |
Node() {}
|
| 89 | 89 |
Node (Invalid) : _id(-1) {}
|
| 90 | 90 |
bool operator==(const Node node) const {return _id == node._id;}
|
| 91 | 91 |
bool operator!=(const Node node) const {return _id != node._id;}
|
| 92 | 92 |
bool operator<(const Node node) const {return _id < node._id;}
|
| 93 | 93 |
}; |
| 94 | 94 |
|
| 95 | 95 |
class Arc {
|
| 96 | 96 |
friend class FullDigraphBase; |
| 97 | 97 |
|
| 98 | 98 |
protected: |
| 99 | 99 |
int _id; // _node_num * source + target; |
| 100 | 100 |
|
| 101 | 101 |
Arc(int id) : _id(id) {}
|
| 102 | 102 |
|
0 comments (0 inline)