gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
Merge bugfix #392
0 2 0
merge default
2 files changed with 14 insertions and 3 deletions:
↑ Collapse diff ↑
Ignore white space 16 line context
... ...
@@ -560,17 +560,17 @@
560 560
    ///The algorithm computes
561 561
    ///- the %DFS path to \c t,
562 562
    ///- the distance of \c t from the root in the %DFS tree.
563 563
    ///
564 564
    ///\pre init() must be called and a root node should be
565 565
    ///added with addSource() before using this function.
566 566
    void start(Node t)
567 567
    {
568
      while ( !emptyQueue() && G->target(_stack[_stack_head])!=t )
568
      while ( !emptyQueue() && !(*_reached)[t] )
569 569
        processNextArc();
570 570
    }
571 571

	
572 572
    ///Executes the algorithm until a condition is met.
573 573

	
574 574
    ///Executes the algorithm until a condition is met.
575 575
    ///
576 576
    ///This method runs the %DFS algorithm from the root node
... ...
@@ -1507,17 +1507,17 @@
1507 1507
    ///
1508 1508
    /// The algorithm computes
1509 1509
    /// - the %DFS path to \c t,
1510 1510
    /// - the distance of \c t from the root in the %DFS tree.
1511 1511
    ///
1512 1512
    /// \pre init() must be called and a root node should be added
1513 1513
    /// with addSource() before using this function.
1514 1514
    void start(Node t) {
1515
      while ( !emptyQueue() && _digraph->target(_stack[_stack_head]) != t )
1515
      while ( !emptyQueue() && !(*_reached)[t] )
1516 1516
        processNextArc();
1517 1517
    }
1518 1518

	
1519 1519
    /// \brief Executes the algorithm until a condition is met.
1520 1520
    ///
1521 1521
    /// Executes the algorithm until a condition is met.
1522 1522
    ///
1523 1523
    /// This method runs the %DFS algorithm from the root node
Ignore white space 16 line context
... ...
@@ -45,17 +45,20 @@
45 45
  "2 3  2\n"
46 46
  "1 4  3\n"
47 47
  "4 2  4\n"
48 48
  "4 5  5\n"
49 49
  "5 0  6\n"
50 50
  "6 3  7\n"
51 51
  "@attributes\n"
52 52
  "source 0\n"
53
  "target 5\n";
53
  "target 5\n"
54
  "source1 6\n"
55
  "target1 3\n";
56

	
54 57

	
55 58
void checkDfsCompile()
56 59
{
57 60
  typedef concepts::Digraph Digraph;
58 61
  typedef Dfs<Digraph> DType;
59 62
  typedef Digraph::Node Node;
60 63
  typedef Digraph::Arc Arc;
61 64

	
... ...
@@ -174,21 +177,24 @@
174 177
}
175 178

	
176 179
template <class Digraph>
177 180
void checkDfs() {
178 181
  TEMPLATE_DIGRAPH_TYPEDEFS(Digraph);
179 182

	
180 183
  Digraph G;
181 184
  Node s, t;
185
  Node s1, t1;
182 186

	
183 187
  std::istringstream input(test_lgf);
184 188
  digraphReader(G, input).
185 189
    node("source", s).
186 190
    node("target", t).
191
    node("source1", s1).
192
    node("target1", t1).
187 193
    run();
188 194

	
189 195
  Dfs<Digraph> dfs_test(G);
190 196
  dfs_test.run(s);
191 197

	
192 198
  Path<Digraph> p = dfs_test.path(t);
193 199
  check(p.length() == dfs_test.dist(t),"path() found a wrong path.");
194 200
  check(checkPath(G, p),"path() found a wrong path.");
... ...
@@ -205,16 +211,21 @@
205 211
        check(dfs_test.dist(v) - dfs_test.dist(u) == 1,
206 212
              "Wrong distance. (" << dfs_test.dist(u) << "->"
207 213
              << dfs_test.dist(v) << ")");
208 214
      }
209 215
    }
210 216
  }
211 217

	
212 218
  {
219
  Dfs<Digraph> dfs(G);
220
  check(dfs.run(s1,t1) && dfs.reached(t1),"Node 3 is reachable from Node 6.");
221
  }
222
  
223
  {
213 224
    NullMap<Node,Arc> myPredMap;
214 225
    dfs(G).predMap(myPredMap).run(s);
215 226
  }
216 227
}
217 228

	
218 229
int main()
219 230
{
220 231
  checkDfs<ListDigraph>();
0 comments (0 inline)