BFS исследует граф уровень за уровнем, посещая всех соседей узла перед переходом вглубь. Использует очередь и находит кратчайший путь (наименьшее количество рёбер) в невзвешенных графах.
Идея
Начните с источника, добавьте его в очередь, затем повторно извлекайте узел из очереди, посещайте его непосещённых соседей и добавляйте их в очередь. Множество visited предотвращает повторные посещения.
