| ... | ... |
@@ -471,24 +471,31 @@ |
| 471 | 471 |
Arc() {}
|
| 472 | 472 |
Arc (Invalid) { _id = -1; }
|
| 473 | 473 |
bool operator==(const Arc& arc) const {return _id == arc._id;}
|
| 474 | 474 |
bool operator!=(const Arc& arc) const {return _id != arc._id;}
|
| 475 | 475 |
bool operator<(const Arc& arc) const {return _id < arc._id;}
|
| 476 | 476 |
}; |
| 477 | 477 |
|
| 478 | 478 |
|
| 479 | 479 |
|
| 480 | 480 |
SmartGraphBase() |
| 481 | 481 |
: nodes(), arcs() {}
|
| 482 | 482 |
|
| 483 |
typedef True NodeNumTag; |
|
| 484 |
typedef True EdgeNumTag; |
|
| 485 |
typedef True ArcNumTag; |
|
| 486 |
|
|
| 487 |
int nodeNum() const { return nodes.size(); }
|
|
| 488 |
int edgeNum() const { return arcs.size() / 2; }
|
|
| 489 |
int arcNum() const { return arcs.size(); }
|
|
| 483 | 490 |
|
| 484 | 491 |
int maxNodeId() const { return nodes.size()-1; }
|
| 485 | 492 |
int maxEdgeId() const { return arcs.size() / 2 - 1; }
|
| 486 | 493 |
int maxArcId() const { return arcs.size()-1; }
|
| 487 | 494 |
|
| 488 | 495 |
Node source(Arc e) const { return Node(arcs[e._id ^ 1].target); }
|
| 489 | 496 |
Node target(Arc e) const { return Node(arcs[e._id].target); }
|
| 490 | 497 |
|
| 491 | 498 |
Node u(Edge e) const { return Node(arcs[2 * e._id].target); }
|
| 492 | 499 |
Node v(Edge e) const { return Node(arcs[2 * e._id + 1].target); }
|
| 493 | 500 |
|
| 494 | 501 |
static bool direction(Arc e) {
|
0 comments (0 inline)