EduBrick

O. Рёбра на кратчайших путях

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

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

Двумя запусками Дейкстры — из вершины 1 и из вершины nn. Обозначим a[v]a[v] и b[v]b[v] полученные расстояния, а D=a[n]D = a[n]. Ребро (u,v)(u, v) веса ww лежит на кратчайшем пути, если

a[u]+w+b[v]=Dилиa[v]+w+b[u]=D.a[u] + w + b[v] = D \quad\text{или}\quad a[v] + w + b[u] = D.

Две проверки, потому что ребро неориентированное и пройти его можно в любую сторону.

Смысл равенства простой: слева — длина наилучшего пути, который обязан пройти по этому ребру. Если она равна DD, ребро на каком-то кратчайшем пути лежит; если больше — не лежит ни на одном.

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

Если пути из 1 в nn нет, ответ — ноль.

Формат ввода

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

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

Одно число.

Примеры

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