22 #ifndef TRACIDIJKSTRAROUTER_H
23 #define TRACIDIJKSTRAROUTER_H
126 if (
MSNet::getInstance()->getWeightsStorage().retrieveExistingEffort(e, 0, t, value)) {
129 const MSLane*
const l = e->getLanes()[0];
137 SUMOTime msTime, std::vector<const E*> &into) {
143 visited =
new std::vector<bool>(
myNoE,
false);
145 for (
size_t i = 0; i <
myNoE; i++) {
146 (*visited)[i] =
false;
156 if (from == 0 || to == 0) {
157 throw std::exception();
162 std::vector<EdgeInfo*>,
165 const E* actualKnot = from;
167 EdgeInfo* ei = storage->
add(actualKnot, 0, 0);
168 frontierList.push(ei);
170 bool isFirstIteration =
true;
173 while (!frontierList.empty()) {
175 EdgeInfo* minimumKnot = frontierList.top();
176 const E* minEdge = minimumKnot->
edge;
179 if ((minEdge == to) && (!isFirstIteration)) {
184 (*visited)[minEdge->getNumericalID()] =
true;
188 const unsigned int length_size = minEdge->getNoFollowing();
189 for (i = 0; i < length_size; i++) {
190 const E* help = minEdge->getFollower(i);
192 if ((!(*visited)[help->getNumericalID()] && effort < storage->
getEffort(help))
195 frontierList.push(storage->
add(help, effort, minimumKnot));
200 isFirstIteration =
false;
210 for (
typename std::vector<const E*>::const_iterator i = edges.begin(); i != edges.end(); i++) {
219 std::deque<const E*> tmp;
221 while (rbegin != 0) {
222 tmp.push_front((E*) rbegin->
edge);
223 rbegin = rbegin->
prev;
224 if (rbegin == last) {
225 tmp.push_front((E*) rbegin->
edge);
229 std::copy(tmp.begin(), tmp.end(), std::back_inserter(edges));