EduBrick

L. Кратчайший и покороче

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

Среди всех путей наименьшего веса из вершины 1 в вершину nn найдите тот, в котором меньше всего рёбер, и выведите это количество.

Считается так же, как количество кратчайших путей в классной задаче L, только вместо суммы берётся минимум:

e[v]=1+min⁡dist[u]+w(u,v)=dist[v]e[u],e[1]=0.e[v] = 1 + \min_{\mathrm{dist}[u] + w(u,v) = \mathrm{dist}[v]} e[u], \qquad e[1] = 0.

Перебор идёт в порядке возрастания расстояния — том самом, в котором Дейкстра снимает вершины с кучи.

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

Формат ввода

Первая строка содержит числа 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).

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

Одно число — наименьшее количество рёбер, или −1-1, если пути нет.

Примеры

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