Gran Sasso Science Institute
Starting node \(s\) added to queue, marked as visited and assigned to level 0 with itself as predecessor
While queue not empty
First node \(x\) of the queue at level \(l\) extracted and marked as explored
For each neighbor \(y\) of \(x\), if \(y\) neither visited nor explored, \(y\) added to queue, marked as visited and assigned level \(l + 1\) with \(x\) as a predecessor