_dfs.c
上传用户:gzelex
上传日期:2007-01-07
资源大小:707k
文件大小:1k
开发平台:

MultiPlatform

  1. /*******************************************************************************
  2. +
  3. +  LEDA-R  3.2.3
  4. +
  5. +  _dfs.c
  6. +
  7. +  Copyright (c) 1995  by  Max-Planck-Institut fuer Informatik
  8. +  Im Stadtwald, 66123 Saarbruecken, Germany     
  9. +  All rights reserved.
  10. *******************************************************************************/
  11. /*******************************************************************************
  12. *                                                                              *
  13. *  DFS  (depth first search)                                                   *
  14. *                                                                              *
  15. *******************************************************************************/
  16. #include <LEDA/graph_alg.h>
  17. #include <LEDA/b_stack.h>
  18. list<node> DFS(const graph& G, node v, node_array<bool>& reached)
  19.   int n = G.number_of_nodes();
  20.   b_stack<node> S(n);
  21.   list<node>    L;
  22.   if (!reached[v])
  23.   { reached[v] = true;
  24.     S.push(v);
  25.    }
  26.   while (!S.empty())
  27.   { v = S.pop(); 
  28.     L.append(v);
  29.     node w;
  30.     forall_adj_nodes(w,v) 
  31.       if (!reached[w]) 
  32.        { reached[w] = true;
  33.          S.push(w);
  34.         }
  35.    }
  36.   return L;
  37.