COIN-OR::LEMON - Graph Library

Changeset 1864:1788205e36af in lemon-0.x


Ignore:
Timestamp:
12/19/05 10:43:13 (18 years ago)
Author:
Balazs Dezso
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2436
Message:

Fixing Bellman's name

Location:
lemon
Files:
2 edited
1 copied

Legend:

Unmodified
Added
Removed
  • lemon/Makefile.am

    r1847 r1864  
    2222
    2323nobase_pkginclude_HEADERS = \
    24         belmann_ford.h \
     24        bellman_ford.h \
    2525        bezier.h \
    2626        bfs.h \
  • lemon/bellman_ford.h

    r1858 r1864  
    11/* -*- C++ -*-
    2  * lemon/belmann_ford.h - Part of LEMON, a generic C++ optimization library
     2 * lemon/bellman_ford.h - Part of LEMON, a generic C++ optimization library
    33 *
    44 * Copyright (C) 2005 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
     
    2020/// \ingroup flowalgs
    2121/// \file
    22 /// \brief BelmannFord algorithm.
     22/// \brief BellmanFord algorithm.
    2323///
    2424
     
    3232namespace lemon {
    3333
    34   /// \brief Default OperationTraits for the BelmannFord algorithm class.
     34  /// \brief Default OperationTraits for the BellmanFord algorithm class.
    3535  /// 
    3636  /// It defines all computational operations and constants which are
    37   /// used in the belmann ford algorithm. The default implementation
     37  /// used in the bellman ford algorithm. The default implementation
    3838  /// is based on the numeric_limits class. If the numeric type does not
    3939  /// have infinity value then the maximum value is used as extremal
     
    4242    typename Value,
    4343    bool has_infinity = std::numeric_limits<Value>::has_infinity>
    44   struct BelmannFordDefaultOperationTraits {
     44  struct BellmanFordDefaultOperationTraits {
    4545    /// \brief Gives back the zero value of the type.
    4646    static Value zero() {
     
    6262
    6363  template <typename Value>
    64   struct BelmannFordDefaultOperationTraits<Value, false> {
     64  struct BellmanFordDefaultOperationTraits<Value, false> {
    6565    static Value zero() {
    6666      return static_cast<Value>(0);
     
    7878  };
    7979 
    80   /// \brief Default traits class of BelmannFord class.
    81   ///
    82   /// Default traits class of BelmannFord class.
     80  /// \brief Default traits class of BellmanFord class.
     81  ///
     82  /// Default traits class of BellmanFord class.
    8383  /// \param _Graph Graph type.
    8484  /// \param _LegthMap Type of length map.
    8585  template<class _Graph, class _LengthMap>
    86   struct BelmannFordDefaultTraits {
     86  struct BellmanFordDefaultTraits {
    8787    /// The graph type the algorithm runs on.
    8888    typedef _Graph Graph;
     
    9797    typedef typename _LengthMap::Value Value;
    9898
    99     /// \brief Operation traits for belmann-ford algorithm.
     99    /// \brief Operation traits for bellman-ford algorithm.
    100100    ///
    101101    /// It defines the infinity type on the given Value type
    102102    /// and the used operation.
    103     /// \see BelmannFordDefaultOperationTraits
    104     typedef BelmannFordDefaultOperationTraits<Value> OperationTraits;
     103    /// \see BellmanFordDefaultOperationTraits
     104    typedef BellmanFordDefaultOperationTraits<Value> OperationTraits;
    105105 
    106106    /// \brief The type of the map that stores the last edges of the
     
    140140  };
    141141 
    142   /// \brief %BelmannFord algorithm class.
     142  /// \brief %BellmanFord algorithm class.
    143143  ///
    144144  /// \ingroup flowalgs
    145   /// This class provides an efficient implementation of \c Belmann-Ford
     145  /// This class provides an efficient implementation of \c Bellman-Ford
    146146  /// algorithm. The edge lengths are passed to the algorithm using a
    147147  /// \ref concept::ReadMap "ReadMap", so it is easy to change it to any
    148148  /// kind of length.
    149149  ///
    150   /// The Belmann-Ford algorithm solves the shortest path from one node
     150  /// The Bellman-Ford algorithm solves the shortest path from one node
    151151  /// problem when the edges can have negative length but the graph should
    152152  /// not contain cycles with negative sum of length. If we can assume
     
    161161  /// \param _Graph The graph type the algorithm runs on. The default value
    162162  /// is \ref ListGraph. The value of _Graph is not used directly by
    163   /// BelmannFord, it is only passed to \ref BelmannFordDefaultTraits.
     163  /// BellmanFord, it is only passed to \ref BellmanFordDefaultTraits.
    164164  /// \param _LengthMap This read-only EdgeMap determines the lengths of the
    165165  /// edges. The default map type is \ref concept::StaticGraph::EdgeMap
    166166  /// "Graph::EdgeMap<int>".  The value of _LengthMap is not used directly
    167   /// by BelmannFord, it is only passed to \ref BelmannFordDefaultTraits. 
     167  /// by BellmanFord, it is only passed to \ref BellmanFordDefaultTraits. 
    168168  /// \param _Traits Traits class to set various data types used by the
    169   /// algorithm.  The default traits class is \ref BelmannFordDefaultTraits
    170   /// "BelmannFordDefaultTraits<_Graph,_LengthMap>".  See \ref
    171   /// BelmannFordDefaultTraits for the documentation of a BelmannFord traits
     169  /// algorithm.  The default traits class is \ref BellmanFordDefaultTraits
     170  /// "BellmanFordDefaultTraits<_Graph,_LengthMap>".  See \ref
     171  /// BellmanFordDefaultTraits for the documentation of a BellmanFord traits
    172172  /// class.
    173173  ///
     
    179179  template <typename _Graph=ListGraph,
    180180            typename _LengthMap=typename _Graph::template EdgeMap<int>,
    181             typename _Traits=BelmannFordDefaultTraits<_Graph,_LengthMap> >
     181            typename _Traits=BellmanFordDefaultTraits<_Graph,_LengthMap> >
    182182#endif
    183   class BelmannFord {
     183  class BellmanFord {
    184184  public:
    185185   
     
    192192    public:
    193193      virtual const char* exceptionName() const {
    194         return "lemon::BelmannFord::UninitializedParameter";
     194        return "lemon::BellmanFord::UninitializedParameter";
    195195      }
    196196    };
     
    250250  public :
    251251 
    252     typedef BelmannFord Create;
     252    typedef BellmanFord Create;
    253253
    254254    /// \name Named template parameters
     
    270270    template <class T>
    271271    struct DefPredMap
    272       : public BelmannFord< Graph, LengthMap, DefPredMapTraits<T> > {
    273       typedef BelmannFord< Graph, LengthMap, DefPredMapTraits<T> > Create;
     272      : public BellmanFord< Graph, LengthMap, DefPredMapTraits<T> > {
     273      typedef BellmanFord< Graph, LengthMap, DefPredMapTraits<T> > Create;
    274274    };
    275275   
     
    289289    template <class T>
    290290    struct DefDistMap
    291       : public BelmannFord< Graph, LengthMap, DefDistMapTraits<T> > {
    292       typedef BelmannFord< Graph, LengthMap, DefDistMapTraits<T> > Create;
     291      : public BellmanFord< Graph, LengthMap, DefDistMapTraits<T> > {
     292      typedef BellmanFord< Graph, LengthMap, DefDistMapTraits<T> > Create;
    293293    };
    294294   
     
    305305    template <class T>
    306306    struct DefOperationTraits
    307       : public BelmannFord< Graph, LengthMap, DefOperationTraitsTraits<T> > {
    308       typedef BelmannFord< Graph, LengthMap, DefOperationTraitsTraits<T> >
     307      : public BellmanFord< Graph, LengthMap, DefOperationTraitsTraits<T> > {
     308      typedef BellmanFord< Graph, LengthMap, DefOperationTraitsTraits<T> >
    309309      Create;
    310310    };
     
    314314  protected:
    315315   
    316     BelmannFord() {}
     316    BellmanFord() {}
    317317
    318318  public:     
     
    322322    /// \param _graph the graph the algorithm will run on.
    323323    /// \param _length the length map used by the algorithm.
    324     BelmannFord(const Graph& _graph, const LengthMap& _length) :
     324    BellmanFord(const Graph& _graph, const LengthMap& _length) :
    325325      graph(&_graph), length(&_length),
    326326      _pred(0), local_pred(false),
     
    328328   
    329329    ///Destructor.
    330     ~BelmannFord() {
     330    ~BellmanFord() {
    331331      if(local_pred) delete _pred;
    332332      if(local_dist) delete _dist;
     
    338338    /// Sets the length map.
    339339    /// \return \c (*this)
    340     BelmannFord &lengthMap(const LengthMap &m) {
     340    BellmanFord &lengthMap(const LengthMap &m) {
    341341      length = &m;
    342342      return *this;
     
    350350    /// automatically allocated map, of course.
    351351    /// \return \c (*this)
    352     BelmannFord &predMap(PredMap &m) {
     352    BellmanFord &predMap(PredMap &m) {
    353353      if(local_pred) {
    354354        delete _pred;
     
    366366    /// automatically allocated map, of course.
    367367    /// \return \c (*this)
    368     BelmannFord &distMap(DistMap &m) {
     368    BellmanFord &distMap(DistMap &m) {
    369369      if(local_dist) {
    370370        delete _dist;
     
    417417    }
    418418
    419     /// \brief Executes one round from the belmann ford algorithm.
     419    /// \brief Executes one round from the bellman ford algorithm.
    420420    ///
    421421    /// If the algoritm calculated the distances in the previous round
     
    451451    }
    452452
    453     /// \brief Executes one weak round from the belmann ford algorithm.
     453    /// \brief Executes one weak round from the bellman ford algorithm.
    454454    ///
    455455    /// If the algorithm calculated the distances in the
     
    489489    /// with addSource() before using this function.
    490490    ///
    491     /// This method runs the %BelmannFord algorithm from the root node(s)
     491    /// This method runs the %BellmanFord algorithm from the root node(s)
    492492    /// in order to compute the shortest path to each node. The algorithm
    493493    /// computes
     
    507507    /// a negative cycles in the graph it gives back false.
    508508    ///
    509     /// This method runs the %BelmannFord algorithm from the root node(s)
     509    /// This method runs the %BellmanFord algorithm from the root node(s)
    510510    /// in order to compute the shortest path to each node. The algorithm
    511511    /// computes
     
    525525    /// with addSource() before using this function.
    526526    ///
    527     /// This method runs the %BelmannFord algorithm from the root node(s)
     527    /// This method runs the %BellmanFord algorithm from the root node(s)
    528528    /// in order to compute the shortest path with at most \c length edge
    529529    /// long paths to each node. The algorithm computes
     
    536536    }
    537537   
    538     /// \brief Runs %BelmannFord algorithm from node \c s.
     538    /// \brief Runs %BellmanFord algorithm from node \c s.
    539539    ///   
    540     /// This method runs the %BelmannFord algorithm from a root node \c s
     540    /// This method runs the %BellmanFord algorithm from a root node \c s
    541541    /// in order to compute the shortest path to each node. The algorithm
    542542    /// computes
     
    556556    }
    557557   
    558     /// \brief Runs %BelmannFord algorithm with limited path length
     558    /// \brief Runs %BellmanFord algorithm with limited path length
    559559    /// from node \c s.
    560560    ///   
    561     /// This method runs the %BelmannFord algorithm from a root node \c s
     561    /// This method runs the %BellmanFord algorithm from a root node \c s
    562562    /// in order to compute the shortest path with at most \c len edges
    563563    /// to each node. The algorithm computes
     
    580580
    581581    /// \name Query Functions
    582     /// The result of the %BelmannFord algorithm can be obtained using these
     582    /// The result of the %BellmanFord algorithm can be obtained using these
    583583    /// functions.\n
    584584    /// Before the use of these functions,
     
    663663  };
    664664 
    665   /// \brief Default traits class of BelmannFord function.
    666   ///
    667   /// Default traits class of BelmannFord function.
     665  /// \brief Default traits class of BellmanFord function.
     666  ///
     667  /// Default traits class of BellmanFord function.
    668668  /// \param _Graph Graph type.
    669669  /// \param _LengthMap Type of length map.
    670670  template <typename _Graph, typename _LengthMap>
    671   struct BelmannFordWizardDefaultTraits {
     671  struct BellmanFordWizardDefaultTraits {
    672672    /// \brief The graph type the algorithm runs on.
    673673    typedef _Graph Graph;
     
    682682    typedef typename _LengthMap::Value Value;
    683683
    684     /// \brief Operation traits for belmann-ford algorithm.
     684    /// \brief Operation traits for bellman-ford algorithm.
    685685    ///
    686686    /// It defines the infinity type on the given Value type
    687687    /// and the used operation.
    688     /// \see BelmannFordDefaultOperationTraits
    689     typedef BelmannFordDefaultOperationTraits<Value> OperationTraits;
     688    /// \see BellmanFordDefaultOperationTraits
     689    typedef BellmanFordDefaultOperationTraits<Value> OperationTraits;
    690690
    691691    /// \brief The type of the map that stores the last
     
    716716  };
    717717 
    718   /// \brief Default traits used by \ref BelmannFordWizard
    719   ///
    720   /// To make it easier to use BelmannFord algorithm
     718  /// \brief Default traits used by \ref BellmanFordWizard
     719  ///
     720  /// To make it easier to use BellmanFord algorithm
    721721  /// we have created a wizard class.
    722   /// This \ref BelmannFordWizard class needs default traits,
    723   /// as well as the \ref BelmannFord class.
    724   /// The \ref BelmannFordWizardBase is a class to be the default traits of the
    725   /// \ref BelmannFordWizard class.
     722  /// This \ref BellmanFordWizard class needs default traits,
     723  /// as well as the \ref BellmanFord class.
     724  /// The \ref BellmanFordWizardBase is a class to be the default traits of the
     725  /// \ref BellmanFordWizard class.
    726726  /// \todo More named parameters are required...
    727727  template<class _Graph,class _LengthMap>
    728   class BelmannFordWizardBase
    729     : public BelmannFordWizardDefaultTraits<_Graph,_LengthMap> {
    730 
    731     typedef BelmannFordWizardDefaultTraits<_Graph,_LengthMap> Base;
     728  class BellmanFordWizardBase
     729    : public BellmanFordWizardDefaultTraits<_Graph,_LengthMap> {
     730
     731    typedef BellmanFordWizardDefaultTraits<_Graph,_LengthMap> Base;
    732732  protected:
    733733    /// Type of the nodes in the graph.
     
    750750    /// This constructor does not require parameters, therefore it initiates
    751751    /// all of the attributes to default values (0, INVALID).
    752     BelmannFordWizardBase() : _graph(0), _length(0), _pred(0),
     752    BellmanFordWizardBase() : _graph(0), _length(0), _pred(0),
    753753                           _dist(0), _source(INVALID) {}
    754754
     
    761761    /// \param length is the initial value of  \ref _length
    762762    /// \param source is the initial value of  \ref _source
    763     BelmannFordWizardBase(const _Graph& graph,
     763    BellmanFordWizardBase(const _Graph& graph,
    764764                          const _LengthMap& length,
    765765                          Node source = INVALID) :
     
    769769  };
    770770 
    771   /// A class to make the usage of BelmannFord algorithm easier
    772 
    773   /// This class is created to make it easier to use BelmannFord algorithm.
    774   /// It uses the functions and features of the plain \ref BelmannFord,
     771  /// A class to make the usage of BellmanFord algorithm easier
     772
     773  /// This class is created to make it easier to use BellmanFord algorithm.
     774  /// It uses the functions and features of the plain \ref BellmanFord,
    775775  /// but it is much simpler to use it.
    776776  ///
     
    778778  /// in the traits class is based on functions that returns the new class
    779779  /// and not on templatable built-in classes.
    780   /// When using the plain \ref BelmannFord
     780  /// When using the plain \ref BellmanFord
    781781  /// the new class with the modified type comes from
    782782  /// the original class by using the ::
    783   /// operator. In the case of \ref BelmannFordWizard only
     783  /// operator. In the case of \ref BellmanFordWizard only
    784784  /// a function have to be called and it will
    785785  /// return the needed class.
    786786  ///
    787787  /// It does not have own \ref run method. When its \ref run method is called
    788   /// it initiates a plain \ref BelmannFord class, and calls the \ref
    789   /// BelmannFord::run method of it.
     788  /// it initiates a plain \ref BellmanFord class, and calls the \ref
     789  /// BellmanFord::run method of it.
    790790  template<class _Traits>
    791   class BelmannFordWizard : public _Traits {
     791  class BellmanFordWizard : public _Traits {
    792792    typedef _Traits Base;
    793793
     
    815815  public:
    816816    /// Constructor.
    817     BelmannFordWizard() : _Traits() {}
     817    BellmanFordWizard() : _Traits() {}
    818818
    819819    /// \brief Constructor that requires parameters.
     
    821821    /// Constructor that requires parameters.
    822822    /// These parameters will be the default values for the traits class.
    823     BelmannFordWizard(const Graph& graph, const LengthMap& length,
     823    BellmanFordWizard(const Graph& graph, const LengthMap& length,
    824824                      Node source = INVALID)
    825825      : _Traits(graph, length, source) {}
    826826
    827827    /// \brief Copy constructor
    828     BelmannFordWizard(const _Traits &b) : _Traits(b) {}
    829 
    830     ~BelmannFordWizard() {}
    831 
    832     /// \brief Runs BelmannFord algorithm from a given node.
     828    BellmanFordWizard(const _Traits &b) : _Traits(b) {}
     829
     830    ~BellmanFordWizard() {}
     831
     832    /// \brief Runs BellmanFord algorithm from a given node.
    833833    ///   
    834     /// Runs BelmannFord algorithm from a given node.
     834    /// Runs BellmanFord algorithm from a given node.
    835835    /// The node can be given by the \ref source function.
    836836    void run() {
    837837      if(Base::_source == INVALID) throw UninitializedParameter();
    838       BelmannFord<Graph,LengthMap,_Traits>
     838      BellmanFord<Graph,LengthMap,_Traits>
    839839        bf(*(Graph*)Base::_graph, *(LengthMap*)Base::_length);
    840840      if (Base::_pred) bf.predMap(*(PredMap*)Base::_pred);
     
    843843    }
    844844
    845     /// \brief Runs BelmannFord algorithm from the given node.
    846     ///
    847     /// Runs BelmannFord algorithm from the given node.
     845    /// \brief Runs BellmanFord algorithm from the given node.
     846    ///
     847    /// Runs BellmanFord algorithm from the given node.
    848848    /// \param source is the given source.
    849849    void run(Node source) {
     
    866866    ///
    867867    template<class T>
    868     BelmannFordWizard<DefPredMapBase<T> > predMap(const T &t)
     868    BellmanFordWizard<DefPredMapBase<T> > predMap(const T &t)
    869869    {
    870870      Base::_pred=(void *)&t;
    871       return BelmannFordWizard<DefPredMapBase<T> >(*this);
     871      return BellmanFordWizard<DefPredMapBase<T> >(*this);
    872872    }
    873873   
     
    886886    ///
    887887    template<class T>
    888     BelmannFordWizard<DefDistMapBase<T> > distMap(const T &t) {
     888    BellmanFordWizard<DefDistMapBase<T> > distMap(const T &t) {
    889889      Base::_dist=(void *)&t;
    890       return BelmannFordWizard<DefDistMapBase<T> >(*this);
     890      return BellmanFordWizard<DefDistMapBase<T> >(*this);
    891891    }
    892892
     
    904904    ///
    905905    template<class T>
    906     BelmannFordWizard<DefOperationTraitsBase<T> > distMap() {
    907       return BelmannFordWizard<DefDistMapBase<T> >(*this);
    908     }
    909    
    910     /// \brief Sets the source node, from which the BelmannFord algorithm runs.
    911     ///
    912     /// Sets the source node, from which the BelmannFord algorithm runs.
     906    BellmanFordWizard<DefOperationTraitsBase<T> > distMap() {
     907      return BellmanFordWizard<DefDistMapBase<T> >(*this);
     908    }
     909   
     910    /// \brief Sets the source node, from which the BellmanFord algorithm runs.
     911    ///
     912    /// Sets the source node, from which the BellmanFord algorithm runs.
    913913    /// \param source is the source node.
    914     BelmannFordWizard<_Traits>& source(Node source) {
     914    BellmanFordWizard<_Traits>& source(Node source) {
    915915      Base::_source = source;
    916916      return *this;
     
    919919  };
    920920 
    921   /// \brief Function type interface for BelmannFord algorithm.
     921  /// \brief Function type interface for BellmanFord algorithm.
    922922  ///
    923923  /// \ingroup flowalgs
    924   /// Function type interface for BelmannFord algorithm.
     924  /// Function type interface for BellmanFord algorithm.
    925925  ///
    926926  /// This function also has several \ref named-templ-func-param
    927927  /// "named parameters", they are declared as the members of class
    928   /// \ref BelmannFordWizard.
     928  /// \ref BellmanFordWizard.
    929929  /// The following
    930930  /// example shows how to use these parameters.
    931931  /// \code
    932   /// belmannford(g,length,source).predMap(preds).run();
     932  /// bellmanford(g,length,source).predMap(preds).run();
    933933  /// \endcode
    934   /// \warning Don't forget to put the \ref BelmannFordWizard::run() "run()"
     934  /// \warning Don't forget to put the \ref BellmanFordWizard::run() "run()"
    935935  /// to the end of the parameter list.
    936   /// \sa BelmannFordWizard
    937   /// \sa BelmannFord
     936  /// \sa BellmanFordWizard
     937  /// \sa BellmanFord
    938938  template<class _Graph, class _LengthMap>
    939   BelmannFordWizard<BelmannFordWizardBase<_Graph,_LengthMap> >
    940   belmannFord(const _Graph& graph,
     939  BellmanFordWizard<BellmanFordWizardBase<_Graph,_LengthMap> >
     940  bellmanFord(const _Graph& graph,
    941941              const _LengthMap& length,
    942942              typename _Graph::Node source = INVALID) {
    943     return BelmannFordWizard<BelmannFordWizardBase<_Graph,_LengthMap> >
     943    return BellmanFordWizard<BellmanFordWizardBase<_Graph,_LengthMap> >
    944944      (graph, length, source);
    945945  }
  • lemon/johnson.h

    r1784 r1864  
    2626#include <lemon/graph_utils.h>
    2727#include <lemon/dijkstra.h>
    28 #include <lemon/belmann_ford.h>
     28#include <lemon/bellman_ford.h>
    2929#include <lemon/invalid.h>
    3030#include <lemon/error.h>
     
    101101    typedef typename _LengthMap::Value Value;
    102102
    103     /// \brief Operation traits for belmann-ford algorithm.
     103    /// \brief Operation traits for bellman-ford algorithm.
    104104    ///
    105105    /// It defines the infinity type on the given Value type
     
    545545    void start() {
    546546
    547       typedef typename BelmannFord<Graph, LengthMap>::
     547      typedef typename BellmanFord<Graph, LengthMap>::
    548548      template DefOperationTraits<OperationTraits>::
    549549      template DefPredMap<NullMap<Node, Edge> >::
    550       Create BelmannFordType;
     550      Create BellmanFordType;
    551551     
    552       BelmannFordType belmannford(*graph, *length);
     552      BellmanFordType bellmanford(*graph, *length);
    553553
    554554      NullMap<Node, Edge> predMap;
    555555
    556       belmannford.predMap(predMap);
     556      bellmanford.predMap(predMap);
    557557     
    558       belmannford.init(OperationTraits::zero());
    559       belmannford.start();
    560 
    561       shiftedRun(belmannford.distMap());
     558      bellmanford.init(OperationTraits::zero());
     559      bellmanford.start();
     560
     561      shiftedRun(bellmanford.distMap());
    562562    }
    563563
     
    572572    bool checkedStart() {
    573573     
    574       typedef typename BelmannFord<Graph, LengthMap>::
     574      typedef typename BellmanFord<Graph, LengthMap>::
    575575      template DefOperationTraits<OperationTraits>::
    576576      template DefPredMap<NullMap<Node, Edge> >::
    577       Create BelmannFordType;
    578 
    579       BelmannFordType belmannford(*graph, *length);
     577      Create BellmanFordType;
     578
     579      BellmanFordType bellmanford(*graph, *length);
    580580
    581581      NullMap<Node, Edge> predMap;
    582582
    583       belmannford.predMap(predMap);
     583      bellmanford.predMap(predMap);
    584584     
    585       belmannford.init(OperationTraits::zero());
    586       if (!belmannford.checkedStart()) return false;
    587 
    588       shiftedRun(belmannford.distMap());
     585      bellmanford.init(OperationTraits::zero());
     586      if (!bellmanford.checkedStart()) return false;
     587
     588      shiftedRun(bellmanford.distMap());
    589589      return true;
    590590    }
Note: See TracChangeset for help on using the changeset viewer.