news 2026/2/2 13:46:06

【Leetcode】1786. Number of Restricted Paths From First to Last Node

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Leetcode】1786. Number of Restricted Paths From First to Last Node

题目地址:

https://leetcode.com/problems/number-of-restricted-paths-from-first-to-last-node/description/

给定一个n nn个点m mm条边的无向非负权图,顶点编号为1 ∼ n 1\sim n1n,每个点到n nn可以求出最短距离,记为d [ u ] d[u]d[u];问从1 11n nn存在多少条满足d [ 1 ] > d [ i 1 ] > d [ i 2 ] > . . . > d [ n ] d[1]>d[i_1]>d[i_2]>...>d[n]d[1]>d[i1]>d[i2]>...>d[n]的路径。答案对1 0 9 + 7 10^9+7109+7取模。

为了求每个点到点n nn的最短路,可以用Dijkstra算法来做,以n nn为源点即可。接着,设f [ u ] f[u]f[u]是从u uu出发到n nn的满足条件的路径数,则有:f [ u ] = ∑ u → v ∧ d [ u ] > d [ v ] f [ v ] f[u]=\sum_{u\to v \land d[u]>d[v]} f[v]f[u]=uvd[u]>d[v]f[v]边界条件f [ n ] = 1 f[n]=1f[n]=1。可以用记忆化搜索来做。代码如下:

classSolution{public:usingPII=pair<int,int>;intcountRestrictedPaths(intn,vector<vector<int>>&es){staticconstexprintINF=2e9,MOD=1e9+7;intm=es.size();vector<int>h(n+1,-1),e(m<<1),ne(m<<1),w(m<<1);intidx=0;autoadd=[&](inta,intb,intc){e[idx]=b,ne[idx]=h[a],w[idx]=c,h[a]=idx++;};for(auto&e:es){inta=e[0],b=e[1],c=e[2];add(a,b,c);add(b,a,c);}vector<int>dist(n+1,INF);dist[n]=0;vector<bool>vis(n+1);priority_queue<PII,vector<PII>,greater<>>heap;heap.push({0,n});while(heap.size()){auto[d,u]=heap.top();heap.pop();if(vis[u])continue;vis[u]=true;for(inti=h[u];~i;i=ne[i]){intv=e[i];if(dist[v]>d+w[i]){dist[v]=d+w[i];heap.push({dist[v],v});}}}vector<int>f(n+1,-1);autodfs=[&](auto&&self,intu)->int{if(~f[u])returnf[u];if(u==n)returnf[u]=1;f[u]=0;for(inti=h[u];~i;i=ne[i]){intv=e[i];if(dist[v]<dist[u])f[u]=(f[u]+self(self,v))%MOD;}returnf[u];};returndfs(dfs,1);}};

时间复杂度O ( m log ⁡ n + m + n ) O(m\log n+m+n)O(mlogn+m+n),空间O ( m + n ) O(m+n)O(m+n)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/28 23:09:45

大数据架构自动化运维:从部署到扩缩容

大数据架构自动化运维&#xff1a;从部署到扩缩容关键词&#xff1a;大数据运维、自动化部署、弹性扩缩容、监控告警、AIOps摘要&#xff1a;本文从“开一家永远不打烊的智能餐厅”的生活场景切入&#xff0c;用通俗易懂的语言讲解大数据架构自动化运维的核心逻辑。我们将一步一…

作者头像 李华
网站建设 2026/1/30 13:04:46

位运算求解八皇后问题:极致优雅的性能优化之道

八皇后问题是计算机科学中的经典回溯算法案例&#xff0c;但在大规模棋盘时性能瓶颈明显。今天我们来介绍一种高效优雅的位运算解法&#xff0c;它不仅能大幅提升性能&#xff0c;还能让代码更加简洁清晰。一、位运算基础&#xff1a;八皇后必备的位操作技巧在深入八皇后问题之…

作者头像 李华
网站建设 2026/1/30 14:50:53

34、Shell编程中的流程控制与位置参数使用

Shell编程中的流程控制与位置参数使用 1. 流程控制之case语句 在编程里,流程控制是非常重要的一部分。之前在处理用户选择时,我们会用一系列 if 命令来判断用户选了哪个选项。不过,这种结构在程序里经常出现,所以很多编程语言(像shell)都提供了用于多选择决策的流程控…

作者头像 李华
网站建设 2026/1/29 12:11:37

揭秘边缘端Agent数据持久化难题:4步实现低功耗高可靠存储

第一章&#xff1a;边缘端Agent数据持久化的挑战与意义在物联网和边缘计算快速发展的背景下&#xff0c;边缘端Agent作为连接终端设备与云端服务的核心组件&#xff0c;承担着数据采集、本地处理与状态同步等关键任务。由于边缘设备常面临网络不稳定、资源受限和突发断电等问题…

作者头像 李华
网站建设 2026/1/31 9:27:28

从采集到洞察:工业互联网Agent数据分析的7个必知步骤

第一章&#xff1a;工业互联网Agent数据分析的核心价值在工业互联网体系中&#xff0c;Agent作为部署于边缘设备或关键节点的智能代理程序&#xff0c;承担着数据采集、实时处理与本地决策的重要职责。其产生的数据不仅涵盖设备运行状态、环境参数和操作日志&#xff0c;还包含…

作者头像 李华