This class provides an efficient implementation of the DFS algorithm with visitor interface.
The DfsVisit class provides an alternative interface to the Dfs class. It works with callback mechanism, the DfsVisit object calls the member functions of the Visitor
class on every DFS event.
This interface of the DFS algorithm should be used in special cases when extra actions have to be performed in connection with certain events of the DFS algorithm. Otherwise consider to use Dfs or dfs() instead.
GR  The type of the digraph the algorithm runs on. The default type is ListDigraph. The value of GR is not used directly by DfsVisit, it is only passed to DfsVisitDefaultTraits. 
VS  The Visitor type that is used by the algorithm. DfsVisitor<GR> is an empty visitor, which does not observe the DFS events. If you want to observe the DFS events, you should implement your own visitor class. 
TR  The traits class that defines various types used by the algorithm. By default, it is DfsVisitDefaultTraits<GR>. In most cases, this parameter should not be set directly, consider to use the named template parameters instead. 
#include <lemon/dfs.h>
Classes  
struct  SetReachedMap 
Named parameter for setting ReachedMap type. More...  
Public Types  
typedef TR  Traits 
The traits class.  
typedef Traits::Digraph  Digraph 
The type of the digraph the algorithm runs on.  
typedef VS  Visitor 
The visitor type used by the algorithm.  
typedef Traits::ReachedMap  ReachedMap 
The type of the map that indicates which nodes are reached.  
Public Member Functions  
DfsVisit (const Digraph &digraph, Visitor &visitor)  
Constructor. More...  
~DfsVisit ()  
Destructor.  
DfsVisit &  reachedMap (ReachedMap &m) 
Sets the map that indicates which nodes are reached. More...  
Execution Control  
The simplest way to execute the DFS algorithm is to use one of the member functions called run().  
void  init () 
Initializes the internal data structures. More...  
void  addSource (Node s) 
Adds a new source node. More...  
Arc  processNextArc () 
Processes the next arc. More...  
Arc  nextArc () const 
Next arc to be processed. More...  
bool  emptyQueue () const 
Returns false if there are nodes to be processed. More...  
int  queueSize () const 
Returns the number of the nodes to be processed. More...  
void  start () 
Executes the algorithm. More...  
void  start (Node t) 
Executes the algorithm until the given target node is reached. More...  
template<typename AM >  
Arc  start (const AM &am) 
Executes the algorithm until a condition is met. More...  
void  run (Node s) 
Runs the algorithm from the given source node. More...  
bool  run (Node s, Node t) 
Finds the DFS path between s and t . More...  
void  run () 
Runs the algorithm to visit all nodes in the digraph. More...  
Query Functions  
bool  reached (Node v) const 
Checks if the given node is reached from the root(s). More...  
Constructor.
digraph  The digraph the algorithm runs on. 
visitor  The visitor object of the algorithm. 

inline 

inline 
Initializes the internal data structures.

inline 
Adds a new source node to the set of nodes to be processed.

inline 
Processes the next arc.

inline 
Next arc to be processed.

inline 
Returns false
if there are nodes to be processed in the queue (stack).

inline 
Returns the number of the nodes to be processed in the queue (stack).

inline 
Executes the algorithm.
This method runs the DFS algorithm from the root node in order to compute the DFS path to each node.
The algorithm computes
d.start()
is just a shortcut of the following code.

inline 
Executes the algorithm until the given target node is reached.
This method runs the DFS algorithm from the root node in order to compute the DFS path to t
.
The algorithm computes
t
,t
from the root in the DFS tree.

inline 
Executes the algorithm until a condition is met.
This method runs the DFS algorithm from the root node until an arc a
with am[a]
true is found.
am  A bool (or convertible) arc map. The algorithm will stop when it reaches an arc a with am[a] true. 
a
with am[a]
true or INVALID
if no such arc was found.

inline 
This method runs the DFS algorithm from node s
. in order to compute the DFS path to each node.
The algorithm computes
d.run(s)
is just a shortcut of the following code.

inline 
This method runs the DFS algorithm from node s
in order to compute the DFS path to node t
(it stops searching when t
is processed).
true
if t
is reachable form s
.d.run(s,t)
is just a shortcut of the following code.

inline 
This method runs the DFS algorithm in order to visit all nodes in the digraph.
d.run()
is just a shortcut of the following code.