Ctrl K

Самый надёжный маршрут сообщения

Средняя
Есть сеть из n ретрансляторов с номерами от 0 до n - 1. Список links описывает двусторонние линии связи: links[i] = [a, b] соединяет ретрансляторы a и b, а chances[i] — вероятность, что сообщение пройдёт по этой линии без потерь. Сбои на разных линиях независимы, поэтому шанс пройти маршрут целиком — произведение шансов его линий. Верните наибольший шанс доставить сообщение из ретранслятора source в ретранслятор target. Если между ними нет ни одного маршрута, верните 0. Ответ принимается, если он отличается от верного не больше чем на 10⁻⁵.
Пример 1
n=4, links=[[0, 1], [1, 3], [0, 2], [2, 3]], chances=[0.9, 0.5, 0.6, 0.8], source=0, target=3 → 0.48

Через узел 1 сообщение дойдёт с шансом 0.9 · 0.5 = 0.45, через узел 2 — с шансом 0.6 · 0.8 = 0.48. Лучше второй маршрут.

Пример 2
n=3, links=[[0, 1]], chances=[1.0], source=0, target=2 → 0

До узла 2 не ведёт ни одна линия, поэтому шанс 0.

Пример 3
n=3, links=[[0, 1], [1, 2], [0, 2]], chances=[0.7, 0.7, 0.4], source=2, target=0 → 0.48999999999999994
Ограничения
  • 2 ≤ n ≤ 10⁴
  • 0 ≤ source, target < n, source ≠ target
  • 0 ≤ len(links) = len(chances) ≤ 2 · 10⁴
  • 0 ≤ a, b < n, a ≠ b
  • 0 ≤ chances[i] ≤ 1
  • Между двумя ретрансляторами не больше одной линии
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКратчайший путь катящегося шарика СредняяСувенир с возвращением СредняяПуть через туннели СредняяБлижайшая отмеченная вершина СредняяОстановки, которые закрываются Средняя
загружаем Python…
Вход
n=4, links=[[0, 1], [1, 3], [0, 2], [2, 3]], chances=[0.9, 0.5, 0.6, 0.8], source=0, target=3
Ожидается
0.48

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