[Lemon-commits] Alpar Juttner: Bug fix in Dfs::start(s,t) (#392)

Lemon HG hg at lemon.cs.elte.hu
Wed Sep 22 09:42:16 CEST 2010


details:   http://lemon.cs.elte.hu/hg/lemon/rev/e24922c56bc2
changeset: 1007:e24922c56bc2
user:      Alpar Juttner <alpar [at] cs.elte.hu>
date:      Wed Sep 22 08:53:09 2010 +0200
description:
	Bug fix in Dfs::start(s,t) (#392)

diffstat:

 lemon/dfs.h      |   4 ++--
 test/dfs_test.cc |  13 ++++++++++++-
 2 files changed, 14 insertions(+), 3 deletions(-)

diffs (63 lines):

diff --git a/lemon/dfs.h b/lemon/dfs.h
--- a/lemon/dfs.h
+++ b/lemon/dfs.h
@@ -558,7 +558,7 @@
     ///added with addSource() before using this function.
     void start(Node t)
     {
-      while ( !emptyQueue() && G->target(_stack[_stack_head])!=t )
+      while ( !emptyQueue() && !(*_reached)[t] )
         processNextArc();
     }
 
@@ -1511,7 +1511,7 @@
     /// \pre init() must be called and a root node should be added
     /// with addSource() before using this function.
     void start(Node t) {
-      while ( !emptyQueue() && _digraph->target(_stack[_stack_head]) != t )
+      while ( !emptyQueue() && !(*_reached)[t] )
         processNextArc();
     }
 
diff --git a/test/dfs_test.cc b/test/dfs_test.cc
--- a/test/dfs_test.cc
+++ b/test/dfs_test.cc
@@ -50,7 +50,10 @@
   "6 3  7\n"
   "@attributes\n"
   "source 0\n"
-  "target 5\n";
+  "target 5\n"
+  "source1 6\n"
+  "target1 3\n";
+
 
 void checkDfsCompile()
 {
@@ -144,11 +147,14 @@
 
   Digraph G;
   Node s, t;
+  Node s1, t1;
 
   std::istringstream input(test_lgf);
   digraphReader(G, input).
     node("source", s).
     node("target", t).
+    node("source1", s1).
+    node("target1", t1).
     run();
 
   Dfs<Digraph> dfs_test(G);
@@ -175,6 +181,11 @@
   }
 
   {
+  Dfs<Digraph> dfs(G);
+  check(dfs.run(s1,t1) && dfs.reached(t1),"Node 3 is reachable from Node 6.");
+  }
+  
+  {
     NullMap<Node,Arc> myPredMap;
     dfs(G).predMap(myPredMap).run(s);
   }



More information about the Lemon-commits mailing list