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

MultiPlatform

  1. /*******************************************************************************
  2. +
  3. +  LEDA-R  3.2.3
  4. +
  5. +  _bfs.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. *  BFS  (breadth first search)                                                 *
  14. *                                                                              *
  15. *******************************************************************************/
  16. #include <LEDA/graph_alg.h>
  17. list<node> BFS(const graph&, node s, node_array<int>& dist)
  18.   // precondition: dist[v] < 0 for all nodes v
  19.   list<node> Q(s);
  20.   node v,w;
  21.   list_item it;
  22.   dist[s] = 0;
  23.   it = Q.first();
  24.   while (it != nil)
  25.     { v = Q[it];
  26.       forall_adj_nodes(w,v)
  27.          if (dist[w] < 0) { Q.append(w); 
  28.                             dist[w] = dist[v]+1;
  29.                            }
  30.       it = Q.succ(it);
  31.      }
  32.   return Q;
  33. }