diff --git a/lemon/bfs.h b/lemon/bfs.h
--- a/lemon/bfs.h
+++ b/lemon/bfs.h
@@ -607,11 +607,11 @@
///Executes the algorithm until the given target node is reached.
///
///This method runs the %BFS algorithm from the root node(s)
- ///in order to compute the shortest path to \c dest.
+ ///in order to compute the shortest path to \c t.
///
///The algorithm computes
- ///- the shortest path to \c dest,
- ///- the distance of \c dest from the root(s).
+ ///- the shortest path to \c t,
+ ///- the distance of \c t from the root(s).
///
///\pre init() must be called and at least one root node should be
///added with addSource() before using this function.
@@ -623,10 +623,10 @@
/// b.processNextNode(t, reach);
/// }
///\endcode
- void start(Node dest)
+ void start(Node t)
{
bool reach = false;
- while ( !emptyQueue() && !reach ) processNextNode(dest, reach);
+ while ( !emptyQueue() && !reach ) processNextNode(t, reach);
}
///Executes the algorithm until a condition is met.
@@ -664,7 +664,7 @@
return rnode;
}
- ///Runs the algorithm from the given node.
+ ///Runs the algorithm from the given source node.
///This method runs the %BFS algorithm from node \c s
///in order to compute the shortest path to each node.
@@ -688,10 +688,10 @@
///Finds the shortest path between \c s and \c t.
///This method runs the %BFS algorithm from node \c s
- ///in order to compute the shortest path to \c t.
+ ///in order to compute the shortest path to node \c t
+ ///(it stops searching when \c t is processed).
///
- ///\return The length of the shortest s--t path,
- ///if \c t is reachable form \c s, \c 0 otherwise.
+ ///\return \c true if \c t is reachable form \c s.
///
///\note Apart from the return value, b.run(s,t) is just a
///shortcut of the following code.
@@ -700,11 +700,11 @@
/// b.addSource(s);
/// b.start(t);
///\endcode
- int run(Node s,Node t) {
+ bool run(Node s,Node t) {
init();
addSource(s);
start(t);
- return reached(t) ? _curr_dist : 0;
+ return reached(t);
}
///Runs the algorithm to visit all nodes in the digraph.
@@ -1621,11 +1621,11 @@
/// Executes the algorithm until the given target node is reached.
///
/// This method runs the %BFS algorithm from the root node(s)
- /// in order to compute the shortest path to \c dest.
+ /// in order to compute the shortest path to \c t.
///
/// The algorithm computes
- /// - the shortest path to \c dest,
- /// - the distance of \c dest from the root(s).
+ /// - the shortest path to \c t,
+ /// - the distance of \c t from the root(s).
///
/// \pre init() must be called and at least one root node should be
/// added with addSource() before using this function.
@@ -1637,9 +1637,9 @@
/// b.processNextNode(t, reach);
/// }
/// \endcode
- void start(Node dest) {
+ void start(Node t) {
bool reach = false;
- while ( !emptyQueue() && !reach ) processNextNode(dest, reach);
+ while ( !emptyQueue() && !reach ) processNextNode(t, reach);
}
/// \brief Executes the algorithm until a condition is met.
@@ -1677,7 +1677,7 @@
return rnode;
}
- /// \brief Runs the algorithm from the given node.
+ /// \brief Runs the algorithm from the given source node.
///
/// This method runs the %BFS algorithm from node \c s
/// in order to compute the shortest path to each node.
@@ -1698,6 +1698,28 @@
start();
}
+ /// \brief Finds the shortest path between \c s and \c t.
+ ///
+ /// This method runs the %BFS algorithm from node \c s
+ /// in order to compute the shortest path to node \c t
+ /// (it stops searching when \c t is processed).
+ ///
+ /// \return \c true if \c t is reachable form \c s.
+ ///
+ /// \note Apart from the return value, b.run(s,t) is just a
+ /// shortcut of the following code.
+ ///\code
+ /// b.init();
+ /// b.addSource(s);
+ /// b.start(t);
+ ///\endcode
+ bool run(Node s,Node t) {
+ init();
+ addSource(s);
+ start(t);
+ return reached(t);
+ }
+
/// \brief Runs the algorithm to visit all nodes in the digraph.
///
/// This method runs the %BFS algorithm in order to