博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Floyd算法解决多源最短路问题
阅读量:4619 次
发布时间:2019-06-09

本文共 1530 字,大约阅读时间需要 5 分钟。

说好的写dijkstra 算法堆优化版本的,但是因为,妹子需要,我还是先把Floyd算法写一下吧!啦啦啦!

咳咳,还是说正事吧!

------------------------------------------------说正事专用分隔符------------------------------------------

用一个关系式,表达一下Floyd算法和dijkstra算法之间的关系

是不是很好懂,其实就把dijkstra算法做了n遍,额鹅鹅鹅,也不能说n遍吧,看有多少个点,

每个点轮流做起点,就能便利出所有的最短路的值,话不多说,直接上代码好吧。

问题还是上篇博客的问题(https://www.cnblogs.com/laysfq/p/9808088.html)

 

#include
#include
using namespace std;const int maxint = 10000000;const int maxn = 1000;int x, y, z;int dis[maxn][maxn];int n, m;void floyd() { for (int k = 1; k <= n; ++k) { //枚举中间点k for (int i = 1; i <= n; ++i) { //枚举端点i for (int j = 1; j <= n; ++j) { //枚举端点j dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]); } } }}int main() { while (cin >> n >> m&&n&&m) { for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { dis[i][j] = maxint; } } for (int i = 1; i <= n; ++i) dis[i][i] = 0; for (int i = 0; i < m; ++i) { cin >> x >> y >> z; dis[x][y] = dis[y][x] = z; } floyd(); // cout << dis[1][n] << endl; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { if(j!=i) cout << "起点"<
<<"到点" <
<< "的最短距离是" << dis[i][j] << endl; } cout << endl; } } return 0;}

运行结果如下:

 

 

其实核心还是dijkstra算法,所以这个算法没什么好讲的了,那么就到这了哦!

赶紧教妹子写代码去,哈哈!

 

转载于:https://www.cnblogs.com/laysfq/p/9808103.html

你可能感兴趣的文章
angularjs实现首页轮播图
查看>>
Git 对象 和checkout 和stash的笔记
查看>>
团队项目总结2-服务器通信模型和顺序图
查看>>
hdu 1085 Holding Bin-Laden Captive!
查看>>
[周记]8.7~8.16
查看>>
递归定义
查看>>
kindeditor 代码高亮设置
查看>>
图的邻接表存储
查看>>
2018 leetcode
查看>>
各浏览器对 onbeforeunload 事件的支持与触发条件实现有差异
查看>>
PHP中获取当前页面的完整URL
查看>>
所谓输入掩码技术,即只有数字键起作用
查看>>
Display对象,Displayable对象
查看>>
安装oracle11G,10G时都会出现:注册ocx时出现OLE初始化错误或ocx装载错误对话框
查看>>
数据结构(并查集):COGS 260. [NOI2002] 银河英雄传说
查看>>
生产环境下正则的应用实例(一)
查看>>
在CentOS7命令行模式下安装虚拟机
查看>>
Arduino可穿戴开发入门教程Arduino开发环境介绍
查看>>
Windows平台flex+gcc词法分析实验工具包
查看>>
3.Python基础 序列sequence
查看>>