EduBrick

L. Сколько кратчайших путей

3000 мс · 256 МБ · всё или ничего

Посчитайте количество кратчайших путей из вершины 1 в вершину nn во взвешенном графе. Ответ выведите по модулю 109+710^9 + 7.

Схема та же, что была для невзвешенного графа: сначала расстояния, потом счёт по возрастанию расстояния.

ways[v]=∑dist[u]+w(u,v)=dist[v]ways[u],ways[1]=1.\mathrm{ways}[v] = \sum_{\mathrm{dist}[u] + w(u,v) = \mathrm{dist}[v]} \mathrm{ways}[u], \qquad \mathrm{ways}[1] = 1.

Единственное, что нужно поменять: вершины перебираются в порядке возрастания dist\mathrm{dist}, а не по слоям обхода в ширину. Дейкстра как раз снимает их с кучи в этом порядке, так что можно считать прямо во время работы алгоритма — либо отсортировать вершины после.

Веса строго положительны, поэтому рёбра кратчайших путей ведут строго от меньшего расстояния к большему, и порядок по расстоянию законен. При нулевых весах это было бы неверно: появились бы циклы из нулевых рёбер, и путей стало бы бесконечно много.

Кратные рёбра между одной парой вершин считаются разными путями, если оба лежат на кратчайшем.

Формат ввода

Первая строка содержит числа nn (1≤n≤1051 \le n \le 10^5) и mm (0≤m≤2⋅1050 \le m \le 2 \cdot 10^5).

Далее идут mm строк с рёбрами: концы и вес ww (1≤w≤1041 \le w \le 10^4). Возможны кратные рёбра; петель нет.

Формат вывода

Одно число — количество кратчайших путей по модулю 109+710^9 + 7, или 00, если пути нет.

Примеры

ввод
4 4
1 2 1
1 3 1
2 4 1
3 4 1
вывод
2
ввод
2 2
1 2 5
1 2 5
вывод
2
Войдите, чтобы отправлять решения.