最短路径的弗洛伊德算法
实现计算有向图没有负权回路的的任何点对的最短路径程序输入的有向图示#include iostream #include vector #include queue #include unordered_set #include climits #include unordered_map using namespace std; void shortestpath_FLOYD(int n, long long (a)[4][4], int(path)[4][4], int(Edge)[4][4]) { for (int i 0; i n; i) //初始化数组a 和path for (int j 0; j n; j) { a[i][j] Edge[i][j]; if (i ! j a[i][j] std::numeric_limitsfloat::max()) path[i][j] i; //vi 与vj 之间有弧 else path[i][j] 99999; } for (int k 0; k n; k) //计算每一对顶点之间的A( k )值 for (int i 0; i n; i) for (int j 0; j n; j) if (a[i][k] a[k][j] a[i][j]) { a[i][j] a[i][k] a[k][j]; path[i][j] path[k][j]; } } void printshortestPath_printlength(long long acopy[][4], int pathcopy[][4],int source , int target) { std::cout The shortest path from source to target is: std::endl; std::cout (acopy[source][target]) std::endl; if (acopy[source][target] INT_MAX) { std::cout INT_MAX stands for the fact that source can not reach target ! std::endl; } else { std::cout The path is : std::endl; std::cout target --; while (pathcopy[source][target] ! source) { std::cout pathcopy[source][target] --; target pathcopy[source][target]; } std::cout pathcopy[source][target] endl; } std::cout End std::endl; } int main() { int source; int target; int n 4; int Edge[4][4] { {0,1,INT_MAX,4}, {INT_MAX,0,9,2}, {3,5,0,8}, {INT_MAX, INT_MAX,INT_MAX,0}, // 实验 3--2 没有 链路 }; int path[4][4] { -1 }; long long a[4][4] { 0 }; std::cout sizeof(long long) endl; std::cout Enter the source: std::endl; cin source; std::cout Enter the target: std::endl; cin target; shortestpath_FLOYD(n,a,path,Edge); std::cout The ultimate matrix a is : std::endl; for (int i0 ; i4 ; i ) for (int j 0; j 4; j) { std::cout a[i][j] ; if (j 3) { std::cout endl; } } std::cout The ultimate path matrix is : std::endl; for (int i 0; i 4; i) for (int j 0; j 4; j) { std::cout path[i][j] ; if (j 3) { std::cout endl; } } printshortestPath_printlength(a, path, source, target); }结果说明最终的最短距离矩阵中 如果值为INT_MAX 2147483647 表示 点对之间无路径可通最终输出的路径矩阵 path表示点对 path[i][j] 中回溯的上一个节点点对自己的回溯无实际意义用path[i][i] 99999特殊标识 表示

相关新闻

099、多摄融合与变焦系统:广角到长焦的无缝切换算法

099、多摄融合与变焦系统:广角到长焦的无缝切换算法

099、多摄融合与变焦系统:广角到长焦的无缝切换算法 一个让我失眠三天的Bug 2019年某旗舰机项目,DVT阶段。客户在发布会前一天反馈:从广角切到长焦时,画面会“抖”一下,像被人推了一把。我盯着log看了三天,发现不是防抖的问题——是融合算法在切换瞬间把两路sensor的视差…

2026/11/15 13:07:08 阅读更多 →
3个关键问题与解决方案:Pony V7如何让AI角色生成效率提升40%

3个关键问题与解决方案:Pony V7如何让AI角色生成效率提升40%

3个关键问题与解决方案:Pony V7如何让AI角色生成效率提升40% 【免费下载链接】pony-v7-base 项目地址: https://ai.gitcode.com/hf_mirrors/purplesmartai/pony-v7-base 当我们面对AI角色生成时,常常会遇到三个核心问题:复杂的空间关…

2026/11/15 17:05:01 阅读更多 →
Java虚拟机:栈帧中的局部变量表

Java虚拟机:栈帧中的局部变量表

写在前面在 Java 开发中,我们都曾遇到过 StackOverflowError,但你是否思考过:为什么同样的递归深度,在不同的方法上表现完全不同? 为什么一个方法能递归 1098 次,而另一个只能递归 303 次?今天&…

2026/11/15 8:04:35 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/15 5:13:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/15 5:13:35 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/15 5:13:35 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/15 3:37:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/15 4:18:38 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/15 5:13:35 阅读更多 →

日新闻

周新闻

月新闻