//////////////////////////////////////////////////////////////////////
-void MTPGraph::print() {
- for(int k = 0; k < _nb_edges; k++) {
- Edge *e = _edges + k;
- cout << e->origin_vertex->id
- << " -> "
- << e->terminal_vertex->id
- << " "
- << e->length;
- if(e->occupied) {
- cout << " *";
- }
- cout << endl;
- }
-}
-
-void MTPGraph::print_dot() {
- cout << "digraph {" << endl;
- cout << " node[shape=circle];" << endl;
- for(int k = 0; k < _nb_edges; k++) {
- Edge *e = _edges + k;
- if(e->occupied) {
- cout << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
- << " [style=bold,color=black,label=\"" << -e->length << "\"];" << endl;
- } else {
- cout << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
- << " [color=gray,label=\"" << e->length << "\"];" << endl;
- }
- }
- cout << "}" << endl;
-}
-
MTPGraph::MTPGraph(int nb_vertices, int nb_edges,
int *from, int *to,
int source, int sink) {
_edges[e].terminal_vertex = _vertices + to[e];
}
+ paths = 0;
+ nb_paths = 0;
}
MTPGraph::~MTPGraph() {
delete[] _edges;
delete[] _front;
delete[] _new_front;
+ for(int p = 0; p < nb_paths; p++) delete paths[p];
+ delete[] paths;
+}
+
+//////////////////////////////////////////////////////////////////////
+
+void MTPGraph::print() {
+ for(int k = 0; k < _nb_edges; k++) {
+ Edge *e = _edges + k;
+ cout << e->origin_vertex->id
+ << " -> "
+ << e->terminal_vertex->id
+ << " "
+ << e->length;
+ if(e->occupied) {
+ cout << " *";
+ }
+ cout << endl;
+ }
}
+void MTPGraph::print_dot() {
+ cout << "digraph {" << endl;
+ cout << " node[shape=circle];" << endl;
+ for(int k = 0; k < _nb_edges; k++) {
+ Edge *e = _edges + k;
+ if(e->occupied) {
+ cout << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
+ << " [style=bold,color=black,label=\"" << -e->length << "\"];" << endl;
+ } else {
+ cout << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
+ << " [color=gray,label=\"" << e->length << "\"];" << endl;
+ }
+ }
+ cout << "}" << endl;
+}
+
+//////////////////////////////////////////////////////////////////////
+
void MTPGraph::initialize_positivized_lengths_with_min() {
scalar_t length_min = 0;
for(int n = 0; n < _nb_vertices; n++) {
result_edge_occupation[k] = e->occupied;
}
}
+
+void MTPGraph::retrieve_paths() {
+ Edge *e;
+
+ for(int p = 0; p < nb_paths; p++) delete paths[p];
+ delete[] paths;
+
+ nb_paths = 0;
+ for(e = _source->leaving_edges; e; e = e->next_leaving_edge) {
+ if(e->occupied) { nb_paths++; }
+ }
+
+ paths = new Path *[nb_paths];
+
+ int p = 0;
+ for(e = _source->leaving_edges; e; e = e->next_leaving_edge) {
+ if(e->occupied) {
+ paths[p] = new Path();
+ p++;
+ }
+ }
+
+ cout << "NB_PATHS " << nb_paths << endl;
+}