当前位置: 首页>开发笔记>正文

leetcode-1786

leetcode-1786

题意分析

1786. 从第一个节点出发到最后一个节点的受限路径数 - 力扣(LeetCode)1976. 到达目的地的方案数 - 力扣(LeetCode)

        这两题解法一样,建议先做1976,就是最短路+记忆化搜索,只是本题在动态规划时在回溯时加了个递减的限制条件,且不要求是最短路。

算法思路

  1. 先以终点为起点算出最短路径。
  2. 以终点开始回溯,如果下一点的路径长度小于等于当前的路径长度,不合条件,就不进入递归,否则就递归求值。

代码实现

#define maxn 20001
using ll=long long;
typedef pair<int,ll> PII;
const ll inf=LLONG_MAX/2;
const int modi=1e9+7;
class Solution {vector<PII>  g[maxn];ll dist[maxn];ll pathnum[maxn];
public:int countRestrictedPaths(int n, vector<vector<int>>& edges) {for(int i=0;i<n;i++){dist[i]=inf;pathnum[i]=-1;}for(auto & e:edges){int x=e[0]-1,y=e[1]-1,w=e[2];g[x].emplace_back(y,w);g[y].emplace_back(x,w);}priority_queue<PII,vector<PII>,greater<>> q;q.emplace(0,n-1);while(!q.empty()){auto [d,i]=q.top();q.pop();if(dist[i]<inf) continue;dist[i]=d;for(auto & [nxt,w]:g[i]){if(dist[nxt]<inf) continue;q.emplace(d+w,nxt);}}return dfs(n-1,0);}ll dfs(int cur,int end){if(cur==end) return 1;if(pathnum[cur]!=-1) return pathnum[cur];long long ans=0;for(auto & [nxt,w]:g[cur]){if(dist[cur]>=dist[nxt]) continue;ans+=dfs(nxt,end);ans%=modi;                }pathnum[cur]=ans;return ans;}
};

解题总结

        注意距离数组从谁开始,遍历次序,题设条件,还有数据范围是long long,否则溢出报错。

https://www.zydui.com/af5a9V28KBgY.html
>

相关文章:

  • flannels code
  • lee10126
  • leetcode84
  • leetcode官网
  • leetcode72
  • leetcode cn
  • leetcode 17
  • leetcode973
  • vscode搭建nodejs環境,關于VS code ESP-IDF 提示“loading ‘build.ninja‘: 系統找不到指定的文件” 的解決方案
  • 什么是應用軟件并舉例,16.應用舉例
  • 【面經】美團春招三輪面經分享~涵蓋眾多知識點
  • 2021年面試題目,面試題--新增
  • magic king怎么讀,magick++ 簡介
  • 微信怎么設置定時發送,朋友圈可以定時發送嗎?
  • can not connect to rpc service,RPC service
  • ftpserver安卓版,FTPServer
  • server u使用教程,Server-U
  • rpc服務器,RPC 和 Web Service 有什么區別?
  • rpc服務器,web service和rpc的區別
  • psexec
  • dhclient命令,hpe?3par命令行查看狀況腳本
  • hp存儲默認管理口地址,HP3par 多路徑存儲磁盤使用方法
  • hp3par命令行手冊,3par命令集
  • 存儲器芯片的地址范圍,存儲器芯片類別有哪些?
  • 在pc機中各類存儲器,1.14各類存儲器芯片
  • 存儲芯片漲價最新消息,存儲器芯片
  • Windows/Linux性能監控軟件>csv文件,方便生成圖表
  • sqlserver nvarchar,【SQL開發實戰技巧】系列(四十五):Oracle12C常用新特性?VARCHAR2/NVARCHAR2類型最大長度由40
  • arcgis怎么導入地圖,Arcgis路網導入3dmax批量改成道路面
  • 定義animal父類,定義一個父類Animal eat方法 , 定義兩個子類 Dog 特有方法keepHome , Cat 特有方法 catchMouse ;并
  • 手機連接兩個藍牙方法,打開藍牙的設置
  • iconfont圖標免費嗎,關于阿里矢量圖標彩色icon使用
  • ps制作賽博朋克風格,如何用ps做出賽博朋克的風格?
  • ue4綠幕實時導入場景,如何在UE4中制作賽博朋克LED效果
  • 產品經理有哪些培訓課程,2023年全國NPDP產品經理國際認證火熱招生啦
  • B端產品需要什么能力,NPDP認證|B端產品經理是如何做競品調研的?
  • 超級工具,Supershell 一款牛叉閃閃的工具
  • buffer在c語言中是什么意思,QBuffer 用法理解