Number of Restricted Paths From First to Last Node

There is an undirected weighted connected graph. You are given a positive integer n, which denotes that the graph has n nodes labeled from 1 to n, and an array edges where each edges[i] = [ui, vi, weighti] denotes that there is an edge between nodes ui and vi with weight equal to weighti.

A path from node start to node end is a sequence of nodes [z0, z1, z2, ..., zk] such that z0 = start and zk = end, and there is an edge between zi and zi+1 where 0 <= i <= k - 1.

The distance of a path is the sum of the weights on the edges of the path. Let distanceToLastNode(x) denote the shortest distance of a path between node n and node x. A restricted path is a path that also satisfies distanceToLastNode(zi) > distanceToLastNode(zi+1) where 0 <= i <= k - 1.

Return the number of restricted paths from node 1 to node n. Since that number may be too large, return it modulo 10^9 + 7.

Example 1
Inputn = 5, edges = [[1,2,3],[1,3,3],[2,3,1],[1,4,2],[5,2,2],[3,5,1],[5,4,10]]
Output3
The three restricted paths are 1 --> 2 --> 5, 1 --> 2 --> 3 --> 5, and 1 --> 3 --> 5.
Example 2
Inputn = 7, edges = [[1,3,1],[4,1,2],[7,3,4],[2,5,3],[5,6,1],[6,7,2],[7,5,3],[2,6,4]]
Output1
The only restricted path is 1 --> 3 --> 7.

Constraints

  • 1 <= n <= 2 * 10^4
  • n - 1 <= edges.length <= 4 * 10^4
  • edges[i].length == 3
  • 1 <= ui, vi <= n
  • ui != vi
  • 1 <= weighti <= 10^5
  • There is at most one edge between any two nodes.
  • There is at least one path between any two nodes.

Asked at 1 companies

</>

Your Solution

(Ctrl/Cmd + Enter)

Switching Language

Loading template...

Loading...

Sign in to save your progress

AI code evaluation

Get a correctness verdict, missed edge cases, and complexity analysis of your solution.

Sign in to evaluate