Floyd算法——有向图

embedded/2025/3/6 14:29:12/

使用的是在线编译器

在线编译器 – C/C++、Java、Python... | Techie Delight

#include <stdio.h>
#define V 6    //设定图中的顶点数
#define INF 65535   // 设置一个最大值
int P[V][V] = { 0 }; //记录各个顶点之间的最短路径
void printMatrix(int matrix[][V]);  //输出各个顶点之间的最短路径
void printPath(int i, int j); // 递归输出各个顶点之间最短路径的具体线路
void floydWarshall(int graph[][V]); // 实现弗洛伊德算法int main() {// 有向加权图中各个顶点之间的路径信息int graph[V][V] = { {0, INF, 1,INF, INF, INF},{3, 0, INF, 4, 1, INF},{INF, 5, 0, INF, 1, 5},{INF, INF, INF, 0, 1, INF},{INF, INF, INF, INF, 0, 3},{INF, 2, INF, 5, INF, 0}};floydWarshall(graph);
}
// 中序递归输出各个顶点之间最短路径的具体线路
void printPath(int i, int j)
{int k = P[i][j];if (k == 0)return;printPath(i, k);printf("%d-", k + 1);printPath(k, j);
}
// 输出各个顶点之间的最短路径
void printMatrix(int graph[][V]) {int i, j;for (i = 0; i < V; i++) {for (j = 0; j < V; j++) {if (j == i) {continue;}printf("%d - %d: 最短路径为:", i + 1, j + 1);if (graph[i][j] == INF)printf("%s\n", "INF");else {printf("%d", graph[i][j]);printf(",依次经过:%d-", i + 1);//调用递归函数printPath(i, j);printf("%d\n", j + 1);}}}
}
// 实现弗洛伊德算法,graph[][V] 为有向加权图
void floydWarshall(int graph[][V]) {int  i, j, k;//遍历每个顶点,将其作为其它顶点之间的中间顶点,更新 graph 数组for (k = 0; k < V; k++) {for (i = 0; i < V; i++) {for (j = 0; j < V; j++) {//如果新的路径比之前记录的更短,则更新 graph 数组if (graph[i][k] + graph[k][j] < graph[i][j]) {graph[i][j] = graph[i][k] + graph[k][j];//记录此路径P[i][j] = k;}}}}// 输出各个顶点之间的最短路径printMatrix(graph);
}


http://www.ppmy.cn/embedded/170496.html

相关文章

VSCode知名主题带毒 安装量900万次

目前微软已经从 Visual Studio Marketplace 中删除非常流行的主题扩展 Material Theme Free 和 Material Theme Icons&#xff0c;微软称这些主题扩展包含恶意代码。 统计显示这些扩展程序的安装总次数近 900 万次&#xff0c;在微软实施删除后现在已安装这些扩展的开发者也会…

【江科协-STM32】1. GPIO

GPIO简介 GPIO(General Purpose Input/Output)通用输入输出口 可配置为8种输入输出模式。引脚电平0-3.3V&#xff0c;部分引脚可容忍5V&#xff0c;输出模式下可控制端口输出高低电平&#xff0c;用来驱动LED、控制蜂鸣器、模拟通信协议输出时序等。 输入模式下可读取端口的…

网络协议:HTTP协议

简介 HTTP 是一种能够获取如 HTML 这样的网络资源&#xff0c;一般都浏览器这样的接受方发起的&#xff0c;一个完整的 web文档通常由不同的子文档拼接组成&#xff0c;像是文本、布局、图片、视频、脚本等等。 HTTP 是一个 基于TCP/IP通信协议 来传递数据&#xff08;HTML 文…

Python编程中常见的10个案例

文章目录 1. Hello, World!2. 计算斐波那契数列3. 文件读写4. 列表推导式5. 异常处理6. 函数定义与调用7. 类和对象8. 使用模块9. 网络请求10. 数据可视化总结 1. Hello, World! 这是学习任何编程语言时的第一个程序。 代码示例 print("Hello, World!")2. 计算斐波…

【C#】WebApiClient 实例

WebApiClient 实例 一、引用类库 <PackageReference Include"WebApiClientCore" Version"2.1.5" /> <PackageReference Include"WebApiClientCore.Extensions.NewtonsoftJson" Version"2.1.5" /> <PackageReference …

linux常见操作命令

查看目录和文件 ls&#xff1a;列出目录内容。 常用选项&#xff1a; -l&#xff1a;以长格式显示&#xff0c;显示文件的权限、所有者、大小、修改时间等详细信息。-a&#xff1a;显示所有文件和目录&#xff0c;包括隐藏文件&#xff08;以 . 开头的文件&#xff09;。-h&…

分析一个流量包

问题&#xff1a; 攻击者登录Mysql失败多少次&#xff1f;提交答案例如&#xff1a;123攻击者执行的第一个命令返回的结果是什么&#xff1f;提交的字符串例如&#xff1a;www-data攻击者通过UDF提权的方式上传了一个插件&#xff0c;提交该插件的小写md5值。该插件被写入到什…

⭐算法OJ⭐跳跃游戏【动态规划 + 单调队列】(C++实现)Jump Game 系列 VI

⭐算法OJ⭐跳跃游戏【贪心算法】&#xff08;C实现&#xff09;Jump Game 系列 I,II ⭐算法OJ⭐跳跃游戏【BFS滑动窗口】&#xff08;C实现&#xff09;Jump Game 系列 III,IIV 1696. Jump Game VI You are given a 0-indexed integer array nums and an integer k. You are…