If dist[u] + w < dist[v]:
- Set dist[v] = dist[u] + w.
- Set cnt[v] = cnt[u].
- Set minEdges[v] = minEdges[u] + .
- Set maxEdges[v] = maxEdges[u] + .
If dist[u] + w == dist[v]:
- Add cnt[u] to cnt[v] (mod ).
- Update minEdges[v] = min(minEdges[v], minEdges[u] + ).
- Update maxEdges[v] = max(maxEdges[v], maxEdges[u] + ).
The first case replaces the old path. The second case adds an alternative shortest path.