Line data Source code
1 : #pragma once 2 : 3 : #include <set> 4 : #include <vector> 5 : 6 : #include "ShortestPathOneMany.hpp" 7 : 8 : namespace Alg::ShortestPath { 9 : /** 10 : * @brief Dijkstra's algorithm 11 : * 12 : */ 13 5 : class Dijkstra: public ShortestPathOneMany { 14 : private: 15 : std::vector<Graph::Edge::Weight> dist; 16 : std::vector<Graph::Edge> prev; 17 : 18 : std::set<Graph::Node> sSet; 19 : 20 : virtual bool isStart(Graph::Node u) const; 21 : 22 : public: 23 : virtual void solveList(const Graph &G, const std::list<Graph::Node> &sList); 24 : 25 : virtual Graph::Edge getPrev(Graph::Node d) const; 26 : 27 : virtual Graph::Edge::Weight getPathWeight(Graph::Node d) const; 28 : 29 : virtual bool hasVisited(Graph::Node u) const; 30 : }; 31 : } // namespace Alg::ShortestPath