BFS/DFS на Python: как решать + 5 задач с проверкой

BFS/DFS — это два базовых способа «обойти» граф: пройти по всем достижимым вершинам из стартовой, отмечая посещённые. В задачах это встречается как лабиринты на клетчатом поле, карты с «островками», сети дорог/трамваев, связи между кабинетами, эвакуационные пути и вообще любые объекты вида «точки и переходы между ними».

Как распознать BFS/DFS по условию:

Суть приёма: DFS (depth-first search, «поиск в глубину») уходит как можно дальше по переходам, удобно отмечать целые компоненты. BFS (breadth-first search, «поиск в ширину») идёт слоями по расстоянию и поэтому сразу даёт минимальное число шагов в невзвешенных задачах. Оба метода ускоряют решение тем, что каждый узел/клетка обрабатывается максимум один раз: время обычно пропорционально размеру поля или числу рёбер.

С чего начать учиться:

Ниже — задачи с автопроверкой и разбором подхода: от «островков» на сетке до кратчайших маршрутов и групп связности.

Задачи по теме «BFS/DFS»

Весь каталог задач