BFS(s):
Set Discovered[s] = true and Discovered[v] = false for all other v
Initialize L[0] to consist of the single element s
Set the layer counter i = 0
Set the current BFS tree T =∅
While L[i] is not empty
Initialize an empty list L[i + 1]
For each node u ∈ L[i]
Consider each edge (u, v) incident to u
If Discovered[v] = false then
Set Discovered[v] = true
Add edge (u, v) to the tree T
Add v to the list L[i + 1]
Endif
Endfor
Increment the layer counter i by one
Endwhile
解: 最多有n个list需要set up,所以这个是O(n) time。每进一次while,for走的都是与u相连的edge的数量 + set下一个list, 算下来走完算法是O(m+n)。