// These are the links in the origin_vertex leaving edge list
Edge *next_leaving_edge, *pred_leaving_edge;
- inline void revert();
+ inline void invert();
};
class Vertex {
//////////////////////////////////////////////////////////////////////
-void Edge::revert() {
+void Edge::invert() {
length = - length;
positivized_length = 0;
origin_vertex->del_edge(this);
//////////////////////////////////////////////////////////////////////
-Path::Path(int l) {
- length = l;
- nodes = new int[length];
-}
-
-Path::~Path() {
- delete[] nodes;
-}
-
-//////////////////////////////////////////////////////////////////////
-
MTPGraph::MTPGraph(int nb_vertices, int nb_edges,
int *from, int *to,
int source, int sink) {
void MTPGraph::print_dot(ostream *os) {
(*os) << "digraph {" << endl;
- (*os) << " node[shape=circle];" << endl;
+ // (*os) << " node [shape=circle];" << endl;
+ (*os) << " edge [color=gray]" << endl;
+ (*os) << " " << _source->id << " [peripheries=2];" << endl;
+ (*os) << " " << _sink->id << " [peripheries=2];" << endl;
for(int k = 0; k < _nb_edges; k++) {
Edge *e = _edges + k;
// (*os) << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
// << ";"
// << endl;
if(e->occupied) {
- (*os) << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
+ (*os) << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
<< " [style=bold,color=black,label=\"" << e->length << "\"];" << endl;
} else {
- (*os) << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
- << " [color=gray,label=\"" << e->length << "\"];" << endl;
+ (*os) << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
+ << " [label=\"" << e->length << "\"];" << endl;
}
}
(*os) << "}" << endl;
tmp_front_size = _new_front_size;
_new_front_size = _front_size;
_front_size = tmp_front_size;
- cout << "_front_size = " << _front_size << endl;
} while(_front_size > 0);
}
while(v->best_pred_edge_to_source) {
e = v->best_pred_edge_to_source;
v = e->origin_vertex;
- e->revert();
+ e->invert();
// This is the only place where we change the occupations of
// edges
e->occupied = 1 - e->occupied;
for(int k = 0; k < _nb_edges; k++) {
Edge *e = _edges + k;
- if(e->occupied) { e->revert(); }
+ if(e->occupied) { e->invert(); }
}
}