最短路-Floyd Dijkstrea

Floyd算法

一种求解“多源最短路”问题的算法

在Floyd算法中,图一般用邻接矩阵存储,边权可正可负(但不允许负环),利用动态规划的思想,逐步求解出任意两点之间的最短距离

int d[N][N],初始为无穷

d[i][j]表示考虑到当前情况下,点i到点j的最短距离

Floyd算法

//注意K作为中转点,必须放最外层

for(in k=1;k<=n;++k)for(int i=1;i<=n;++i)for(int j=1j<=n;++j)if(dep[i][k]!=Long.MAX_VALUE&&dep[k][j]!=Long.MAX_VALUE)dep[i][j]=Math.min(dep[i][j],dep[i][k]+dep[k][j]);

只能用来处理n<=500的问题(这也是一个提示,当遇到n<=500的图论问题时,就可以考虑使用Floyd算法)

例题

已知公园有N个景点,景点和景点之间一共有M条道路,小明有Q个观景计划,每个计划包含一个起点st和ed,表示他想从st去到ed,但是小明体力有限,对于每个计划他想走最少的路完成,你可以帮他吗?

输入描述

输入第一行包含三个正整数N,M,Q

第2到M+1行包含三个正整数u,v,w,表示n<->v之间存在一条距离为w的路

第M+2到M+Q-1行每行包含两个正整数st,ed,其含义如题所述

1<=N<=400,1<=M<=N*(N-1)/2,Q<=10^3,1<=u,v,st,ed<=n,1<=w<=10^9

Dijkstra算法

算法需要准备的东西

long dep[N];//dep[i]表示点i距离源点的最短距离。优先队列q以距离从小到大排列PriorityQueue<long []>q=new PriorityQueue<>((o1,o2)->Long.compare(o1[0],o2[0]));
q.add(new long[]{0L,1L});
while(!q.isEmpty()){long []a=q.poll();for(int []y:list[(int)a[1]]){if(a[0]+y[1]<dep[y[0]]){dep[y[0]]=a[0]+y[1];q.add(new long [] {dep[y[0]],y[0]});}}
}

例题

小明是蓝桥王国的王子,今天是他登基之日。
在即将成为国王之前,老国王给他出了道题,他想要考验小明是否有
能力管理国家。
题目的内容如下:
蓝桥王国一共有 N个建筑和 M条单向道路,每条道路都连接石两个
建筑,每个建筑都有自己编号,分别为 1~N(其中皇官的编号为1)
国王想让小明回答从皇官到每个建筑的最短路经是多少,但紧张的小
明此时已经无法思考,请你编写程序帮助小明回答国王的考核。

输入描述
输入第一行包含三个正整数 N,M
第2到 M+1行每行包三个正整数 u,v,m,表示u-->v之间存在一条距离为w 的路
1≤N≤3*10^5,1<=m <=10^6, 1< ui,ui<N, 0<=wi< 10^9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拌合楼管理软件开发(十三) 对接耀华XK3190-A9地磅(实战篇)

前言: 实战开整 目前而言对于整个拌合楼管理软件开发,因为公司对这个项目还处于讨论中,包括个人对其中的商业逻辑也存在一些质疑,都是在做一些技术上的储备.很早就写好了串口与地磅对接获取代码,也大概知道真个逻辑,这次刚好跟库区沟通,远程连接到磅房电脑,开始实操一下. 一、地…

【C++】反向迭代器

一、前言 在前面对vector等容器的学习中&#xff0c;我们学会了如何去使用正向迭代器并模拟实现 但是我们没有去模拟实现反向迭代器&#xff0c;这篇文章中我们就来了解反向迭代器的底层并实现它&#xff0c;把之前的坑给填上。 二、反向迭代器 反向迭代器的底层设计十分精妙…

python统计分析——灵敏度、特异度和ROC曲线

参考资料&#xff1a;python统计分析【托马斯】 1、灵敏度和特异度 灵敏度&#xff1a;也叫作效能。被检验正确识别出来的阳性结果&#xff08;病人中有疾病且检验结果是阳性的概率&#xff09;。 特异度&#xff1a;被检验正确识别出来的阴性结果&#xff08;病人健康且检验结…

大模型融合方法-DARE

LLM在SFT之后会产生大量的冗余参数(delta参数)&#xff0c;阿里团队提出DARE方法来消除delta参数&#xff0c;并将其合并到PRE模型中&#xff0c;从而实现多源模型能力的吸收。 DARE无需GPU重新训练&#xff0c;其思路非常简单&#xff0c;就跟dropout类似&#xff1a; m t ∼…

针对pycharm打开新项目需要重新下载tensorflow的问题解决

目录 一、前提 二、原因 三、解决办法 一、前提 下载包之前&#xff0c;已经打开了&#xff0c;某个项目。 比如&#xff1a;我先打开了下面这个项目&#xff1a; 然后在terminal使用pip命令下载&#xff1a; 如果是这种情况&#xff0c;你下载的这个包一般都只能用在这一个…

自动驾驶轨迹规划之时空语义走廊(一)

欢迎大家关注我的B站&#xff1a; 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 目录 1.摘要 2.系统架构 3.MPDM 4.时空语义走廊 ​4.1 种子生成 4.2 具有语义边界的cube inflation ​4.3 立方体松弛 本文解析了丁文超老师…

如何计算KST指标,昂首资本一个公式计算

在上一篇文章中&#xff0c;Anzo Capital昂首资本和各位投资者一起了解了KST指标&#xff0c;今天我们继续分享如何计算KST指标。 首先投资者可以在时间范围9、12、18和24分析变化率值。 前三个值(时间帧9、12、18)用EMA 26平滑&#xff0c;最后一个值用EMA 39平滑。 然后&…

从0开始搭建基于VUE的前端项目

准备与版本 安装nodejs(v20.11.1)安装vue脚手架(vue/cli 5.0.8) ,参考&#xff08;https://cli.vuejs.org/zh/&#xff09;vue版本&#xff08;2.7.16&#xff09;&#xff0c;vue2的最后一个版本 初始化项目 创建一个git项目&#xff08;可以去gitee/github上创建&#xff…

数据分析之POWER Piovt透视表分析

将几个数据表之间进行关联 生成数据透视表 超级透视表这里的字段包含子字段 这三个月份在前面的解决办法 1.选中这三个月份&#xff0c;鼠标可移动的时候移动到后面 2.在原数据进行修改 添加列获取月份&#xff0c;借助month的函数双击日期 选择月份这列----按列排序-----选择月…

搜索与图论——Dijkstra算法求最短路

最短路算法 稠密图与稀疏图 n为点数&#xff0c;m为边数。m远小于n的平方为稀疏图&#xff0c;m接近n的平方为稠密图。 稀疏图用邻接表存&#xff0c;稠密图用邻接矩阵存 朴素版dijkstra时间复杂度为O(n^2),对于稠密图可以ac&#xff0c;但遇到稀疏图时会TLE。 dijkstra函数实…

Linux权限管理

文章目录 linux权限管理1.Linux权限的概念2.Linux权限管理2.1 文件访问者的分类&#xff08;人&#xff09;2.2 文件类型和访问权限&#xff08;事物属性&#xff09;2.2.1 文件类型2.2.2 基本权限 2.3文件权限值的表示方法2.3.1 字符表示方法2.3.2 八进制数值表示方法 2.4 文件…

CV领域 交叉注意力(Cross Attention)中QKV的含义理解

交叉注意力公式&#xff1a; 注意力的输入&#xff1a; &#xff08;1&#xff09;KV&#xff1a;图像的全局特征 &#xff08;2&#xff09;Q&#xff1a;告诉attention需要关注哪些重要特征 公式计算过程理解&#xff1a; &#xff08;1&#xff09;&#xff1a;Q和K相乘…

后疫情时代CS保研沉思录暨2023年个人保研经验贴

个人情况 正如古话所说&#xff0c;最适合你的才是最好的。因此这里先贴上个人基本情况&#xff0c;用作参考。 如果你的个人情况与我相近&#xff0c;则有更强的参考作用。如果情况相差较大&#xff0c;也可以姑且引为例子来研究。 学校层次&#xff1a;中流至末流211 专业…

C之易错注意点转义字符,sizeof,scanf,printf

目录 前言 一&#xff1a;转义字符 1.转义字符顾名思义就是转换原来意思的字符 2.常见的转义字符 1.特殊\b 2. 特殊\ddd和\xdd 3.转义字符常错点----计算字符串长度 注意 &#xff1a; 如果出现\890,\921这些的不是属于\ddd类型的&#xff0c;&#xff0c;不是一个字符…

把本地文件上传到HDFS上操作步骤

因为条件有限&#xff0c;我这里以虚拟机centos为例 实验条件&#xff1a;我在虚拟机上创建了三台节点&#xff0c;部署了hadoop&#xff0c;把笔记本上的数据上传到hdfs中 数据打包上传到虚拟机节点上 采用的是rz命令&#xff0c;可以帮我们上传数据 没有的话可以使用命令安装…

那个男人开发了一个多账号浏览器

核心价值1&#xff1a;实现了一个浏览器同时登录多个账号&#xff0c;标签页之间信息不共享核心价值2:聚焦于账号管理&#xff0c;所有需要登录多账号都用这个浏览器减轻了找入口的烦恼核心价值3:赏心悦目核心价值4:悬浮功能核心价值5:PC和手机模式一键切换核心价值6:不同于浏览…

Redis 全景图(1)--- 关于 Redis 的6大模块

这是我第一次尝试以长文的形式写一篇Redis的总结文章。这篇文章我想写很久了&#xff0c;只是一直碍于我对Redis的掌握没有那么的好&#xff0c;因此迟迟未动笔。这几天&#xff0c;我一直在看各种不同类型的Redis文章&#xff0c;通过阅读这些文章&#xff0c;引发了我对于Red…

DolphinScheduler on k8s 云原生部署实践

文章目录 前言利用Kubernetes技术云原生平台初始化迁移基于Argo CD添加GitOpsDolphinScheduler 在 k8s 上的服务自愈可观测性集成服务网格云原生工作流调度从HDFS升级到S3文件技术总结 前言 DolphinScheduler 的高效云原生部署模式&#xff0c;比原始部署模式节省了95%以上的人…

【论文通读】AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation

AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation 前言AbstractMotivationFrameworkConversable AgentsConversation Programming ApplicationA1: Math Problem SolvingA2: Retrieval-Augmented Code Generation and Question AnsweringA3: Decision…

相机标定学习记录

相机标定是计算机视觉和机器视觉领域中的一项基本技术&#xff0c;它的主要目的是通过获取相机的内部参数&#xff08;内参&#xff09;和外部参数&#xff08;外参&#xff09;&#xff0c;以及镜头畸变参数&#xff0c;建立起现实世界中的点与相机成像平面上对应像素点之间准…