text: /*
   * Dijkstra.hpp
   *
   *  Created on: Jul 23, 2013
   *      Author: Henning, Christian Staudt
   */
  
  #ifndef NETWORKIT_DISTANCE_DIJKSTRA_HPP_
  #define NETWORKIT_DISTANCE_DIJKSTRA_HPP_
  
  #include <tlx/container/d_ary_addressable_int_heap.hpp>
  
  #include <networkit/auxiliary/VectorComparator.hpp>
  #include <networkit/distance/SSSP.hpp>
  
  namespace NetworKit {
  
  /**
   * @ingroup distance
   * Dijkstra's SSSP algorithm.
   */
  class Dijkstra final : public SSSP {
  
  public:
      /**
       * Creates the Dijkstra class for @a G and the source node @a source.
       *
       * @param G The graph.
       * @param source The source node.
       * @param storePaths Paths are reconstructable and the number of paths is
       *        stored.
       * @param storeNodesSortedByDistance Store a vector of nodes ordered in
       *        increasing distance from the source.
       * @param target The target node.
       */
      Dijkstra(const Graph &G, node source, bool storePaths = true,
               bool storeNodesSortedByDistance = false, node target = none);
  
      /**
       * Performs the Dijkstra SSSP algorithm on the graph given in the
       * constructor.
       */
      void run() override;
  
  private:
      tlx::d_ary_addressable_int_heap<node, 2, Aux::LessInVector<double>> heap;
  };
  
  } /* namespace NetworKit */
  #endif // NETWORKIT_DISTANCE_DIJKSTRA_HPP_
  