Ctrl K

Самый тихий из тех, кто богаче

Средняя
В компании n человек с номерами от 0 до n - 1. У всех разное количество денег, но точные суммы неизвестны: есть только список сравнений richer, где пара [a, b] означает, что a богаче b. Сравнения непротиворечивы. Кроме того, volume[i] — громкость голоса человека i; все громкости различны. Для каждого человека x рассмотрим всех, кто *наверняка* не беднее его: самого x и тех, кто богаче его по цепочке сравнений. Среди них найдите самого тихого — с наименьшей громкостью. Верните массив answer длины n, где answer[x] — номер этого человека.
Пример 1
richer=[[2, 0], [1, 2], [3, 1]], volume=[1, 2, 3, 0] → [3, 3, 3, 3]

Человек 3 богаче 1, 1 богаче 2, 2 богаче 0, так что для каждого из них человек 3 точно не беднее. У него самая маленькая громкость 0, поэтому он ответ для всех.

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

Для человека 0 богаче никто не известен, ответ — он сам. Для 1 кандидаты 0 и 1, тише 1. Для 2 кандидаты 0 и 2, тише 2.

Пример 3
richer=[], volume=[1, 0] → [0, 1]

Сравнений нет, каждый — ответ сам для себя.

Ограничения
  • 1 ≤ n = len(volume) ≤ 10⁴
  • 0 ≤ volume[i] ≤ 10⁴, все значения различны
  • 0 ≤ len(richer) ≤ n · (n − 1) / 2
  • richer[i] = [a, b], 0 ≤ a, b < n, a ≠ b
  • Все пары в richer различны, сравнения не образуют цикла
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРаскрыть шаблон с переменными СредняяПорядок букв по словарю СложнаяСамый длинный подъём по карте СложнаяПуть в дереве без одинаковых соседей СложнаяПрогулки только в гору Сложная
загружаем Python…
Вход
richer=[[2, 0], [1, 2], [3, 1]], volume=[1, 2, 3, 0]
Ожидается
[3, 3, 3, 3]

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