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)