printРабочее место участника

printЗадачи

1781. Количество кратчайших путей

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

В городе есть `N` площадей, соединенных дорогами. Известна длина каждой дороги. Посчитайте количество способов добраться с площади `A` до площади `B` так, чтобы пройденный путь был минимален.
Задано число `N` – количество площадей в городе и `M` – количество улиц. Далее идет описание улиц. Каждая улица задается тремя числами: номерами площадей, которые она соединяет, и длиной. Никакая улица не соединяет площадь с самой собой. Одни и те же площади могут быть соединены разными улицами (в том числе, эти улицы могут иметь разную длину). По каждой улице можно ездить как в прямом, так и в обратном направлении. Далее заданы числа `A` и `B`.
Ограничения: `1\ ≤\ N\ ≤\ 1000`, `1\ ≤\ M\ ≤\ 100000`, `1\ ≤\ A\ ≤\ N`, `1\ ≤\ B\ ≤\ N`. Длины улиц выражаются натуральными числами, не превышающими 100000.
Выведите количество кратчайших путей между площадями `A` и `B` по модулю `10^9+7`. Если с площади `A` нельзя добраться до площади `B`, выведите 0.

Пример ввода 1

4 5
1 4 2
1 2 2
3 4 1
2 4 2
1 3 1
1 4

Пример вывода 1

2

Пример ввода 2

5 4
1 2 5
4 5 4
1 3 4
2 3 2
2 5

Пример вывода 2

0
Источник: Московская открытая олимпиада школьников по программированию, 2011/12 учебный год
loading