Существует сетка размера N x M. Некоторые ячейки - это острова, обозначенные "0", а другие - вода. Каждая ячейка воды имеет номер на ней, обозначающий стоимость моста, сделанного на этой ячейке. Вы должны найти минимальную стоимость, на которую могут быть связаны все острова. Ячейка подключена к другой ячейке, если она разделяет ребро или вершину.
Какой алгоритм можно использовать для решения этой проблемы?
Изменить: Что можно использовать в качестве подхода грубой силы, если значения N, M очень малы, скажем, NxM <= 100?
Пример. В данном изображении зеленые клетки указывают острова, синие клетки указывают, что вода и светло-голубые клетки указывают на ячейки, на которых должен быть сделан мост. Таким образом, для следующего изображения ответ будет 17.
Первоначально я думал о том, чтобы обозначить все острова как узлы и соединил каждую пару островов по кратчайшему мосту. Тогда проблема может быть сведена к минимальному остовному дереву, но в этом подходе я пропустил случай, когда края перекрываются. Например, на следующем изображении кратчайшее расстояние между любыми двумя островами составляет 7 (отмечено желтым), поэтому, используя минимальные расстояния, ответ будет 14, но ответ должен быть 11 (отмечен синим цветом).