Ctrl K

Дамба между двумя островами

Средняя
Карта задана квадратной сеткой grid размером n × n: 1 — суша, 0 — вода. Остров — это группа клеток суши, связанных по сторонам (не по диагонали). На карте ровно два острова. Чтобы соединить их, можно засыпать клетки воды, превращая их в сушу. Верните наименьшее число клеток, которые нужно засыпать, чтобы два острова стали одним.
Пример 1
grid=[[1, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]] → 3

Например, засыпаем клетки (1, 1), (1, 2), (2, 2): три клетки воды соединяют остров в левом верхнем углу с островом справа внизу. Меньшим числом не обойтись.

Пример 2
grid=[[1, 0, 1], [1, 0, 1], [1, 0, 1]] → 1

Две вертикальные полосы суши разделены одной колонкой воды — достаточно засыпать одну клетку.

Ограничения
  • n == len(grid) == len(grid[i])
  • 2 ≤ n ≤ 200
  • grid[i][j] равно 0 или 1
  • На карте ровно два острова
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОсушение замкнутых прудов СредняяУчастки суши на карте СредняяДождь стекает в оба моря СредняяОстановится ли шарик в цели СредняяКратчайший путь катящегося шарика Средняя
загружаем Python…
Вход
grid=[[1, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 16 тестов на сервере, включая скрытые.