Ctrl K

Новость сверху вниз

Средняя
В компании count сотрудников с номерами от 0 до count - 1. Директор — сотрудник chief. Для каждого сотрудника i известен его непосредственный руководитель boss_of[i]; у директора boss_of[chief] = -1. Подчинение образует дерево с директором в корне. Директор хочет донести до всех срочную новость. Он сообщает её своим прямым подчинённым, они — своим, и так далее. Сотруднику i нужно relay_time[i] минут, чтобы оповестить всех своих прямых подчинённых: через relay_time[i] минут после того, как он узнал новость, они узнают её одновременно и сразу начинают передавать дальше. Верните, через сколько минут новость будет знать вся компания. У сотрудника без подчинённых relay_time[i] может быть любым — сообщать ему некому, и на ответ это не влияет.
Пример 1
count=5, chief=0, boss_of=[-1, 0, 0, 1, 1], relay_time=[4, 3, 0, 0, 0] → 7

Директор 0 за 4 минуты оповещает сотрудников 1 и 2. Сотрудник 1 ещё за 3 минуты оповещает своих подчинённых 3 и 4. Последние узнают новость на 7-й минуте.

Пример 2
count=3, chief=1, boss_of=[1, -1, 0], relay_time=[2, 1, 0] → 3

Цепочка 1 → 0 → 2: 1 минута на первый шаг и 2 минуты на второй.

Пример 3
count=1, chief=0, boss_of=[-1], relay_time=[0] → 0

В компании только директор, сообщать некому.

Ограничения
  • 1 ≤ count ≤ 10⁵
  • 0 ≤ chief < count
  • len(boss_of) == len(relay_time) == count
  • boss_of[chief] == -1, для остальных 0 ≤ boss_of[i] < count
  • Связи подчинения образуют дерево с корнем chief
  • 0 ≤ relay_time[i] ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево глазами наблюдателя справа СредняяДерево по столбцам СредняяПервый на нижнем этаже СредняяМаксимум на каждом уровне дерева СредняяОстановить ветку процессов Средняя
загружаем Python…
Вход
count=5, chief=0, boss_of=[-1, 0, 0, 1, 1], relay_time=[4, 3, 0, 0, 0]
Ожидается
7

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