COIN-OR::LEMON - Graph Library

Changeset 1283:fc20371677b9 in lemon-0.x for src/lemon


Ignore:
Timestamp:
03/31/05 15:31:39 (19 years ago)
Author:
Alpar Juttner
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@1715
Message:

getPath() added to Bfs/Dfs/Dijkstra?.

Location:
src/lemon
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/lemon/bfs.h

    r1270 r1283  
    654654    ///@{
    655655
     656    ///Copies the shortest path to \c t into \c p
     657   
     658    ///This function copies the shortest path to \c t into \c p.
     659    ///If it \c \t is a source itself or unreachable, then it does not
     660    ///alter \c p.
     661    ///\todo Is it the right way to handle unreachable nodes?
     662    ///\return Returns \c true if a path to \c t was actually copied to \c p,
     663    ///\c false otherwise.
     664    ///\sa DirPath
     665    template<class P>
     666    bool getPath(P &p,Node t)
     667    {
     668      if(reached(t)) {
     669        p.clear();
     670        typename P::Builder b(p);
     671        for(b.setStartNode(t);pred(t)!=INVALID;t=predNode(t))
     672          b.pushFront(pred(t));
     673        b.commit();
     674        return true;
     675      }
     676      return false;
     677    }
     678
    656679    ///The distance of a node from the root(s).
    657680
  • src/lemon/dfs.h

    r1236 r1283  
    661661    ///@{
    662662
     663    ///Copies the path to \c t on the DFS tree into \c p
     664   
     665    ///This function copies the path on the DFS tree to \c t into \c p.
     666    ///If it \c \t is a source itself or unreachable, then it does not
     667    ///alter \c p.
     668    ///\todo Is it the right way to handle unreachable nodes?
     669    ///\return Returns \c true if a path to \c t was actually copied to \c p,
     670    ///\c false otherwise.
     671    ///\sa DirPath
     672    template<class P>
     673    bool getPath(P &p,Node t)
     674    {
     675      if(reached(t)) {
     676        p.clear();
     677        typename P::Builder b(p);
     678        for(b.setStartNode(t);pred(t)!=INVALID;t=predNode(t))
     679          b.pushFront(pred(t));
     680        b.commit();
     681        return true;
     682      }
     683      return false;
     684    }
     685
    663686    ///The distance of a node from the root(s).
    664687
  • src/lemon/dijkstra.h

    r1236 r1283  
    2121///\file
    2222///\brief Dijkstra algorithm.
     23///
     24///\todo getPath() should be implemented! (also for BFS and DFS)
    2325
    2426#include <lemon/list_graph.h>
     
    656658    ///@{
    657659
     660    ///Copies the shortest path to \c t into \c p
     661   
     662    ///This function copies the shortest path to \c t into \c p.
     663    ///If it \c \t is a source itself or unreachable, then it does not
     664    ///alter \c p.
     665    ///\todo Is it the right way to handle unreachable nodes?
     666    ///\return Returns \c true if a path to \c t was actually copied to \c p,
     667    ///\c false otherwise.
     668    ///\sa DirPath
     669    template<class P>
     670    bool getPath(P &p,Node t)
     671    {
     672      if(reached(t)) {
     673        p.clear();
     674        typename P::Builder b(p);
     675        for(b.setStartNode(t);pred(t)!=INVALID;t=predNode(t))
     676          b.pushFront(pred(t));
     677        b.commit();
     678        return true;
     679      }
     680      return false;
     681    }
     682         
    658683    ///The distance of a node from the root.
    659684
Note: See TracChangeset for help on using the changeset viewer.