Ctrl K

Сундуки, ключи и монеты

Сложная
Есть n сундуков с номерами от 0 до n - 1. Про сундук i известно: - unlocked[i] — 1, если он не заперт, и 0, если заперт; - coins[i] — сколько в нём монет; - keys_inside[i] — номера сундуков, ключи от которых лежат внутри; - chests_found[i] — номера сундуков, которые достаются вам, когда вы открываете сундук i. Сначала у вас есть сундуки из списка start. Сундук, который у вас есть и который не заперт (или от которого у вас есть ключ), можно открыть: забрать монеты, ключи и новые сундуки. Каждый сундук открывается один раз; если сундук достаётся вам повторно, ничего не меняется. Верните, сколько всего монет удастся собрать.
Пример 1
unlocked=[1, 0, 0], coins=[3, 10, 4], keys_inside=[[2], [], [1]], chests_found=[[1, 2], [], []], start=[0] → 17

Сундук 0 не заперт: в нём 3 монеты, ключ от сундука 2, и нам достаются сундуки 1 и 2. В сундуке 2 — 4 монеты и ключ от 1, в сундуке 1 — 10 монет. Всего 17.

Пример 2
unlocked=[0, 1], coins=[5, 6], keys_inside=[[], []], chests_found=[[], []], start=[0] → 0

Сундук 0 заперт, ключа нет, а открытый сундук 1 нам не достался. Ноль монет.

Ограничения
  • 1 ≤ n ≤ 10⁵, все массивы длины n
  • unlocked[i] — 0 или 1
  • 1 ≤ coins[i] ≤ 1000
  • Номера в keys_inside[i], chests_found[i] и start лежат от 0 до n - 1 и внутри каждого списка различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПорядок букв по словарю СложнаяСамый длинный подъём по карте СложнаяШарик и лунка СложнаяКого вылечить первым СложнаяКого отключить от сети Сложная
загружаем Python…
Вход
unlocked=[1, 0, 0], coins=[3, 10, 4], keys_inside=[[2], [], [1]], chests_found=[[1, 2], [], []], start=[0]
Ожидается
17

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