Вы можете создать первую BFS, которая перечисляет доступные запрещенные узлы с самого начала (но не может пересекать ее).Затем вы записываете расстояние от начала.В вашем примере 2 для каждого запрещенного узла.
Вы делаете то же самое с конечным узлом, задавая пути 2 и 1. На вашем пути.
Затем вы запрещаете лучший запрещенный узел (минимальное расстояние от начала +расстояние от конца).И, наконец, вы делаете BFS в полном графе.
Вы можете в конечном итоге сохранить путь ко всем запрещенным узлам, чтобы сохранить последний BFS.