home *** CD-ROM | disk | FTP | other *** search
- /*******************************************************************************
- +
- + LEDA 2.1.1 11-15-1991
- +
- +
- + _dfs.c
- +
- +
- + Copyright (c) 1991 by Max-Planck-Institut fuer Informatik
- + Im Stadtwald, 6600 Saarbruecken, FRG
- + All rights reserved.
- +
- *******************************************************************************/
-
-
-
- /*******************************************************************************
- * *
- * DFS (depth first search) *
- * *
- *******************************************************************************/
-
-
-
- #include <LEDA/graph_alg.h>
- #include <LEDA/b_stack.h>
-
- declare(b_stack,node)
-
- list(node) DFS(const graph& G, node v, node_array(bool)& reached)
- {
- list(node) L;
- b_stack(node) S(G.number_of_nodes());
- node w;
-
- if (!reached[v])
- { reached[v] = true;
- L.append(v);
- S.push(v);
- }
-
- while (!S.empty())
- { v = S.pop();
- forall_adj_nodes(w,v)
- if (!reached[w])
- { reached[w] = true;
- L.append(w);
- S.push(w);
- }
- }
-
- return L;
-
- }
-