The BFS Algorithm

BFS(G,s)
   for each u ∈ V[G]-{s} do
      open[u] = true
      d[u] = ∞ 
      pred[u] = null
   open[s] = false
   d[s] = 0
   pred[s] = null
   Q = {s}
   while Q ≠ {} do
      u = Remove[Q]
      for each v ∈ Adj[u] do
         if open[v] = true
            then open[v] = false
                 d[v] = d[u] + 1
                 pred[v] = u
                 Add(Q,v)