Ctrl K

Где встретиться друзьям

Сложная
Город — сетка city размером m × n: city[i][j] = 1, если в клетке (i, j) живёт кто-то из друзей, и 0 — если нет. Друзья хотят выбрать клетку для встречи (любую, в том числе чей-то дом) так, чтобы суммарный путь всех до неё был минимальным. Ходить можно только по горизонтали и вертикали, поэтому путь из (r₁, c₁) в (r₂, c₂) равен |r₁ - r₂| + |c₁ - c₂|. Верните наименьший возможный суммарный путь.
Пример 1
city=[[0, 1, 0, 0], [0, 0, 0, 1], [1, 0, 0, 0]] → 5

Друзья живут в (0, 1), (1, 3) и (2, 0). Встреча в (1, 1): пути 1, 2 и 2 — всего 5. Меньше не получится.

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

Любая клетка между двумя домами даёт суммарный путь 3.

Пример 3
city=[[1, 0, 1], [0, 0, 0], [1, 0, 1]] → 8
Ограничения
  • 1 ≤ m, n ≤ 200
  • Все строки city одной длины n
  • city[i][j] равно 0 или 1
  • В городе живут хотя бы два друга
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКак расходится слух ЛёгкаяТри самых тяжёлых ромба СредняяВыровнять поле шагами СредняяШахматка перестановками строк и столбцов СложнаяРазброс по всем наборам Сложная
загружаем Python…
Вход
city=[[0, 1, 0, 0], [0, 0, 0, 1], [1, 0, 0, 0]]
Ожидается
5

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