1. for each vertex u (who is not s - the source vertex)
2. ____color(u) = white
3.____ d(u) = inf
4. color(s) = gray
5. d(s) =0
6. Enqueue(Q,s)
7. while Q not empty
8. ____u = head(Q)
9. ____for each v neighbor
of u
10. _______if color(v)
= white then
11. ___________d(v)
= d(u)+1
12. ___________Enqueue(Q,v)
13. ___Dequeue(Q)
14. ___color(u) = black
15. end while
הסבר :
בפסאודו קוד, אנו משתמשים בשני
מערכים כדי לאחסן את צבע כל קודקוד בגרף ואת מרחקו מקודקוד המקור.
כמו כן אנו משתמשים במבנה נתונים נוסף,
תור, כדי לניהול קבוצת הקודקודים האפורה (הקודקודים שבטיפול).
בתחילה צובע האלגוריתם את כל קודקודי הגרף בלבן ומאתחל את מרחקם לאינסוף (שורות 1-3),
כמו כן נצבע קודקוד המקור באפור, מרחקו מקודקוד המקור נקבע לאפס (כמובן) והוא מוכנס לתור (שורות 4-6).
הלולאה העיקרית בתוכנית, עוברת על הקודקודים בתור, לפי סדר כניסתם וכל עוד נותרו קודקודים אפורים.
מוציאים את הקודקוד מראש התור, עוברים על כל שכניו, כל שכן שעוד לא התגלה (צבעו לבן), יצבע באפור,
מרחקו יהיה כמרחק הקודקוד בראש התור ועוד אחד ונכניס אותו לתור (שורות 9-12).
כשמסיימים לעבור על כל שכניו, נוציא אותו מהתור ונצבע אותו בשחור (שורות 13-14).