Надёжный маршрут

Просмотр в формате PDF

Submit solution


Очки: 160
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Автор:
Problem types
Allowed languages
C++, Python

В телекоммуникационной сети имеется n узлов связи и m двусторонних каналов передачи данных. Для каждого канала известна его надёжность — вероятность того, что канал работает исправно (число от 0 до 1).

Маршрут передачи данных от узла s к узлу t может проходить через несколько каналов. Маршрут считается успешным, если все каналы на нём работают. Следовательно, надёжность маршрута равна произведению надёжностей всех его каналов.

Требуется найти маршрут из s в t с максимальной надёжностью.

Если передать данные из s в t невозможно, выведите 0.

Входные данные

В первой строке заданы четыре целых числа n, m, s, t — количество узлов связи, количество каналов, начальный и конечный узлы.

В следующих m строках описаны каналы. Каждая строка содержит два целых числа u, v и вещественное число p — канал между узлами u и v и его надёжность.

Выходные данные

Выведите одно вещественное число — максимальную надёжность маршрута от s до t.

Абсолютная или относительная погрешность ответа не должна превышать 1e-6.

Если маршрут недостижим, выведите 0.

Ограничения

  • 1 <= n <= 100000
  • 0 <= m <= 300000
  • 1 <= s, t <= n
  • 1 <= u, v <= n
  • 0 <= p <= 1

Примеры

Пример 1

Входные данные

4 4 1 4
1 2 0.9000000000
1 3 0.8000000000
2 4 0.7000000000
3 4 0.9500000000

Выходные данные

0.7600000000
Пример 2

Входные данные

3 2 1 3
1 2 0.5000000000
1 3 0.0000000000

Выходные данные

0.0000000000

Комментарии

Еще нет ни одного комментария.