Breadth First Search of a Graph




void bfs(graph g, int start, Edge marked[ ])  
   Queue q 
   int v, w 
   for i  $\in$ [0..g.num_nodes -1]     $\rightarrow$  
      marked[i].parent  :=  UNDEF  
   rof
   q.enqueue(start) 
   marked[start].dist  :=  0 
   marked[start].parent  :=  start 
   do q  $\neq~$ EMPTY     $\rightarrow$  
      v  :=  q.dequeue( ) 
      for w $\in ~$g.adj(v)    $\rightarrow$ 
         if  marked[w].parent  =  UNDEF     $\rightarrow$  
            marked[w].parent  :=  v 
            marked[w].dist  :=  marked[v].dist +g.cost(v,w) 
            q.enqueue(w)  
         fi 
      rof
   od 
end     bfs




Bernard Waxman
11/14/1997