00001 #ifndef ROUTEPLANNING_DEPENDENTDIJKSTRA_H_
00002 #define ROUTEPLANNING_DEPENDENTDIJKSTRA_H_
00003
00004 #include <queue>
00005 #include <utility>
00006 #include <vector>
00007 #include <string>
00008 #include <functional>
00009 #include "./TransitNetworkDependent.h"
00010 #include "./EdgeDependent.h"
00011 #include "./Label.h"
00012 using std::string;
00013 using std::pair;
00014 using std::vector;
00015 class DependentDijkstra
00016 {
00017 public:
00018 DependentDijkstra(TransitNetworkDependent* roadNetwork);
00019
00020
00021 double computeShortestPath(int startId, Time startTime,
00022 int stopId, bool buildPath);
00023
00024
00025
00026 vector <string> transitShortestPath;
00027 size_t exploredNodes;
00028 int transfers;
00029 int time;
00030 private:
00031
00032 void reconstructShortestPath(size_t startId, size_t endId);
00033 TransitNetworkDependent* _tranGraph;
00034 bool _endStopFound;
00035 int _endStopId;
00036 int _endId;
00037 vector <Label> labels;
00038 vector <LabelSet> labelSets;
00039 };
00040 #endif // ROUTEPLANNING_DEPENDENTDIJKSTRA_H_