当前位置: 首页 > news >正文

dedecms网站tag标签静态化如何帮客户做网站

dedecms网站tag标签静态化,如何帮客户做网站,0基础做网站用什么语言,宁波seo推广题目 leetcode787. K 站中转内最便宜的航班 题目分析 给定一个城市图,每个城市通过航班与其他城市相连。每个航班都有一个起点、终点和价格。你需要找到从起点城市 src 到终点城市 dst 的最便宜路径,但这条路径最多只能经过 k 个中转站。你需要返回这…

题目

leetcode787. K 站中转内最便宜的航班

题目分析

给定一个城市图,每个城市通过航班与其他城市相连。每个航班都有一个起点、终点和价格。你需要找到从起点城市 src 到终点城市 dst 的最便宜路径,但这条路径最多只能经过 k 个中转站。你需要返回这种路径的最低价格,如果不存在这样的路径,则返回 -1。

输入:

n:城市的数量
flights:航班的列表,每个航班用 [fromi, toi, pricei] 表示,表示从城市 fromi 到城市 toi 的航班价格为 pricei
src:起点城市
dst:终点城市
k:最多经过的中转站数

输出:

最便宜的价格,如果没有满足条件的路径,则输出 -1

思路分析

我看到这道题第一时间想的就是dijkstra算法,因为我也不会别的算法。
对于k的限制,我想到可以在优先队列中维护一个当前层级的变量,当到达的层级大于k时,就不再扩展了。

但是我没考虑到k的限制可能会导致最短路径无法达成,并且由于dijkstra算法的性质,其他路线也被直接丢弃了

于是我尝试不使用visited数组记录访问过的节点,将每个节点的后继节点都加入队列中,只有层级大于k时,才会跳过。此时算法退化成了变体的广度优先搜索算法,会搜索每一条在中转数在k内的路径。

但是,当数据量大了之后,显然这个算法会超时。

继续思考,发现dijkstra算法找到的是最优路径,但是其中转节点可能很多,而真正的路径只可能在中转节点比最优路径少的路径里,其他中转节点多于最优路径的路径完全可以剪枝,因为他们的费用不可能更低。

按照这个思路,只需要维护一个每个节点的最小中转数,任何多于最小中转数的路径都可以剪枝,因为对于每一个被剪枝的路径来说,在其之前都已经有至少一条路径价格比它低的同时中转数还要小于它

代码

class Solution:def findCheapestPrice(self, n: int, flights: List[List[int]], src: int, dst: int, k: int) -> int:# 建立邻接表maps=[[]  for _ in range(n)]for edge in flights:maps[edge[0]].append(edge[1:])#最小堆模拟优先队列,(价格,节点编号,层级)pq=[(0,src,0)]#当前每个节点的中转数记录visit=[n+1]*nwhile pq:w,p,c=heappop(pq)#过滤超过层级k的节点,剪枝中转城市多余当前节点记录的点if c>=visit[p] or c>k+1:continueif  p == dst:return w# 直接等就可以,比它大的到不了这一步visit[p]=c# 将后继节点加入优先队列for point in maps[p]:heappush(pq,(w + point[1],point[0],c+1))return  -1

提交

一直交刷成绩QAQ
在这里插入图片描述


2024/8/8

http://www.yayakq.cn/news/490042/

相关文章:

  • 上海的网站开发公司电话移动局域网ip做网站
  • 学做快餐的视频网站做网站最少多少钱
  • 黄石建设信息网站网页设计代码在哪里写
  • 我想做一个网站机械做网站好处
  • 制作一个简单的php网站许昌seo推广
  • 网站备案和空间备案做微信公众号网站源码
  • 路由器当服务器做网站网页制作与设计中什么是div
  • 电子商务网站建设卷子知名网站网页设计特色
  • 学校网站建设市场做红包网站
  • 设计素材网站永久绵阳网页制作公司
  • 重庆网站建设制作费用wordpress togetherjs
  • 营销网站的方法免费的网站搭建平台
  • 东莞做网站it s企业如何注册自己的网站
  • 自己怎样制作公司网站将wordpress安装到哪个数据库?
  • wordpress 资讯站wordpress redis密码
  • 网站修改网站关键词如何优化上首页
  • 黑龙江省城乡建设厅网站吉林电商网站建设公司哪家好
  • 个人网站建设优化企业服务网站建设需要多少钱
  • 三明网站建设公司网站建设技巧
  • 深圳电子网站建设用什么软件做网站seo好
  • 淘宝联盟里的网站推广怎么做确定网站的主题与风格
  • 建设工程教育网好还是环球网站好vue大型网站开发吗
  • 做网站联盟要多少钱邯郸市建设局网站材料下载入口
  • 网站建设赚钱wordpress显示标签
  • 电影网-个人网站建设论文贵阳公司网站建立
  • 毕设做网站太简单网页制作与设计素材
  • 网站开发和运行 法律自己买服务器建设网站
  • 东莞微信网站建设怎样做响应式网站
  • 敦化网站开发现在的网游排行第一
  • seo诊断网站免费诊断平台网站页面设计招聘