🗒️1786. 从第一个节点出发到最后一个节点的受限路径数
2025-1-13
| 2025-1-13
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Jan 13, 2025 02:26 AM
现有一个加权无向连通图。给你一个正整数 n ,表示图中有 n 个节点,并按从 1 到 n 给节点编号;另给你一个数组 edges ,其中每个 edges[i] = [ui, vi, weighti] 表示存在一条位于节点 ui 和 vi 之间的边,这条边的权重为 weighti 。
从节点 start 出发到节点 end 的路径是一个形如 [z0, z1, z2, ..., zk] 的节点序列,满足 z0 = start 、zk = end 且在所有符合 0 <= i <= k-1 的节点 zi 和 zi+1 之间存在一条边。
路径的距离定义为这条路径上所有边的权重总和。用 distanceToLastNode(x) 表示节点 n 和 x 之间路径的最短距离。受限路径 为满足 distanceToLastNode(zi) > distanceToLastNode(zi+1) 的一条路径,其中 0 <= i <= k-1 。
返回从节点 1 出发到节点 n 的 受限路径数 。由于数字可能很大,请返回对 109 + 7 取余 的结果。

Dijkstra 算法 + 递推(动态规划)

思路:针对这种抛出一个概念,让你依据概念来做题的,我们需要非常情况题中概念的含义,需要做转换(转换为我们人能读懂更一般的表述),并明确可能的一些边界条件。
题目中描述的受限路径,更一般的表述是:在受限路径中,每个节点到节点 n 的最短路径是逐渐缩小的。例如 1→2→3,则 2→3 的最短路径要严格小于 1→3 的最短路径。
有了对受限路径清楚的认识,我们就可以来拆分这一道题了。我们将题目拆分为两步:第一步,先求所有点到节点 n 的最短路径;第二步,根据最短路径的顺序,求出方案数。

📎 参考

  • 【题单】图论算法
  • 3123. 最短路径中的边1514. 概率最大的路径
    Loading...