news 2026/7/7 20:29:10

【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/7/7 9:42:39

Kotaemon缓存策略优化:减少重复检索提升响应速度

Kotaemon缓存策略优化&#xff1a;减少重复检索提升响应速度 在企业级智能对话系统日益普及的今天&#xff0c;一个看似简单的问题——“如何重置我的密码&#xff1f;”——可能在一天内被成百上千名用户反复提出。如果每次请求都触发完整的知识检索、上下文组装和大模型生成流…

作者头像 李华
网站建设 2026/7/7 17:43:43

霍格沃兹魔法之墙:当主题展厅打破次元壁,开启沉浸式魔法奇旅

推开展厅的青铜大门&#xff0c;熟悉的《海德薇变奏曲》在耳畔响起&#xff0c;眼前却并非电影中的霍格沃兹大厅——而是一面“魔法之墙”。它没有砖石堆砌的厚重感&#xff0c;却以流动的光影、灵敏的感应与隐藏的“魔法机关”&#xff0c;将观众瞬间拽入J.K.罗琳笔下的奇幻宇…

作者头像 李华
网站建设 2026/7/7 8:50:00

零基础学写大麦抢票脚本:Python自动化入门教程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个适合新手的简易大麦抢票脚本教程代码。使用Python基础语法&#xff0c;通过Requests库实现GET/POST请求&#xff0c;讲解如何分析大麦网接口&#xff0c;处理登录Cookie&am…

作者头像 李华
网站建设 2026/7/6 20:59:02

Scikit-Learn 1.8引入 Array API,支持 PyTorch 与 CuPy 张量的原生 GPU 加速

Scikit-Learn 1.8.0 更新引入了实验性的 Array API 支持。这意味着 CuPy 数组或 PyTorch 张量现在可以直接在 Scikit-Learn 的部分组件中直接使用了&#xff0c;且计算过程能保留在 GPU 上。1.8.0 到底更新了什么&#xff1f; Scikit-Learn 开始正式支持Python Array API 标准。…

作者头像 李华
网站建设 2026/7/7 5:29:59

对比实测:传统部署 vs AI生成Docker方案效率提升300%

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请生成一份详细的Dify项目Docker部署效率对比报告模板&#xff0c;要求&#xff1a;1. 设计对照实验方案 2. 包含时间消耗的量化指标 3. 分析常见错误的解决耗时 4. 提供性能测试对…

作者头像 李华
网站建设 2026/7/7 17:44:27

Wav2Lip实战:打造个性化虚拟主播

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个虚拟主播应用&#xff0c;结合Wav2Lip技术和虚拟形象。功能要求&#xff1a;1. 实时音频输入处理&#xff1b;2. 虚拟形象唇形同步&#xff1b;3. 支持多种表情和动作控制&…

作者头像 李华