Ctrl K

Кратчайший обход всех узлов

Сложная
Есть сеть из n узлов с номерами от 0 до n - 1, соединённых двусторонними каналами. Она задана списком links: links[i] — номера всех узлов, напрямую связанных с узлом i. Сеть связная: из любого узла можно добраться до любого другого. Нужно пройти по сети так, чтобы побывать в каждом узле хотя бы раз. Начать и закончить можно в любых узлах, заходить в один узел повторно и проходить по одному каналу несколько раз разрешено. Верните наименьшее число переходов по каналам в таком маршруте.
Пример 1
links=[[1], [0, 2], [1, 3], [2]] → 3

Это цепочка 0–1–2–3: пройдя её от края до края, обходим все узлы за 3 перехода.

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

Звезда с центром 0: например, 1 → 0 → 2 → 0 → 3. В центр приходится возвращаться, поэтому переходов 4.

Пример 3
links=[[]] → 0

Единственный узел уже посещён на старте, переходов не нужно.

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

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