#графы
На графе существует две особые вершины: синяя и красная. Задача состоит в том, чтобы
при удалении красной вершины, также удалить все вершины из которых нельзя достичь синей,
т.е. граф как бы должен распасться на два, один из которых подлежит удалению.
Мое решение состоит в том, чтобы проверить существование пути из каждой вершины в
синюю. Если все пути очередной вершины проходят через красную, то производить удаление
этой вершины.
Может существует более оптимальное решение?
Ответы
Ответ 1
А если так: Удалить красную вершину и все ребра, примыкающие к ней. В получившемся графе провести поиск в глубину из синей вершины. Найденная компонента связности и есть искомый результат.
Комментариев нет:
Отправить комментарий