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

咳咳,还是说正事吧!

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

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

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

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

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

#include<iostream>
#include<algorithm>
using namespace std;
const int maxint = ;
const int maxn = ;
int x, y, z;
int dis[maxn][maxn];
int n, m; void floyd() {
for (int k = ; k <= n; ++k) { //枚举中间点k
for (int i = ; i <= n; ++i) { //枚举端点i
for (int j = ; 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 = ; i <= n; ++i) {
for (int j = ; j <= n; ++j) {
dis[i][j] = maxint;
}
}
for (int i = ; i <= n; ++i) dis[i][i] = ;
for (int i = ; i < m; ++i) {
cin >> x >> y >> z;
dis[x][y] = dis[y][x] = z;
}
floyd();
// cout << dis[1][n] << endl;
for (int i = ; i <= n; ++i) {
for (int j = ; j <= n; ++j) {
if(j!=i) cout << "起点"<<i<<"到点" <<j<< "的最短距离是" << dis[i][j] << endl;
}
cout << endl;
}
}
return ;
}

运行结果如下:

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

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

Floyd算法解决多源最短路问题的更多相关文章

  1. Floyd算法 解决多元汇最短路问题

    接下来是图论问题求解最短路问题的最后一个,求解多元汇最短路问题 我们之前一般都是问1-n的最短路径,这里我们要能随便去问i到j的最短路径: 这里介绍一下Floyd算法:我们只有一个d[maxn][ma ...

  2. Floyd算法解决多源最短路径问题

    Floyd-Warshall算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权(但不可存在负权回路)的最短路径问题,同时也被用于计算有向图的传递闭包. Floyd-Warshall算法 ...

  3. dijkstra算法解决单源最短路问题

    简介 最近这段时间刚好做了最短路问题的算法报告,因此对dijkstra算法也有了更深的理解,下面和大家分享一下我的学习过程. 前言 呃呃呃,听起来也没那么难,其实,真的没那么难,只要弄清楚思路就很容易 ...

  4. Bellman-Ford算法解决单源最短路问题

    #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #define max 100 #define I ...

  5. Floyd 算法求多源最短路径

    Floyd算法: Floyd算法用来找出每对顶点之间的最短距离,它对图的要求是,既可以是无向图也可以是有向图,边权可以为负,但是不能存在负环(可根据最小环的正负来判定). 基本算法: Floyd算法基 ...

  6. Dijkstra算法解决单源最短路径

    单源最短路径问题:给定一个带权有向图 G = (V, E), 其中每条边的权是一个实数.另外,还给定 V 中的一个顶点,称为源.现在要计算从源到其他所有各顶点的最短路径长度.这里的长度是指路上各边权之 ...

  7. Floyd算法解决最短路径问题

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 万圣节的中午,A和B在吃过中饭之后,来到了一个新的鬼屋!鬼屋中一共有N个地点,分别编号为1..N,这N个地点之间互相有一些 ...

  8. 多源最短路径,一文搞懂Floyd算法

    前言 在图论中,在寻路最短路径中除了Dijkstra算法以外,还有Floyd算法也是非常经典,然而两种算法还是有区别的,Floyd主要计算多源最短路径. 在单源正权值最短路径,我们会用Dijkstra ...

  9. 最短路-SPFA算法&Floyd算法

    SPFA算法 算法复杂度 SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环. SPFA一般情况复杂度是O(m)最坏情况下复杂度和朴素 ...

随机推荐

  1. -bash: yum: command not found

    在学习Linux时,发现yum命令无法执行.便查了下,整理成文. yum介绍 Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS ...

  2. 题解 P5315 【头像上传】

    本题就是按照题目模拟, 只是要注意一些细节问题. 看代码注释 #include<bits/stdc++.h> using namespace std; int n,l,g,i; int m ...

  3. python+selenium自动测试之WebDriver的常用API(基础篇一)

    基于python3.6,selenium3.141,详细资料介绍查看官方API文档,点击这里 一.对浏览器操作 driver = webdriver.Chrome() # 初始化chrome driv ...

  4. Redis实战 - 4.Key

    Redis 键(key) Redis 键命令用于管理 redis 的键. DEL key 该命令用于在 key 存在时删除 key. 127.0.0.1:6379> set w3ckey red ...

  5. ***ThinkPHP中的常用方法汇总总结:M方法,D方法,U方法,I方法

    thinkPHP中M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法 ...

  6. Core 2.0使用Nlog记录日志+Mysql

    一.先创建一个Core2.0的项目,并在NuGet中引入3个类库文件 MySql.Data.dll NLog.dll NLog.Web.AspNetCore.dll 二.创建一个nlog.config ...

  7. requireJS简单应用

    项目结构目录: Html页面 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> < ...

  8. 星环大数据安全组件Guardian与hadoop自带的安全组件区别

    在进行讲解之前,先带大家学习下hadoop关于hdfs自己的安全如何实现的--------------------------- 名词: ACL-访问控制列表(Access Control List, ...

  9. dbus-glib 和 GDBus 的区别

    http://people.freedesktop.org/~david/gio-gdbus-codegen-20110412/ch29.html Conceptual differences(概念上 ...

  10. 10_27_unittest

    接口测试的本质 就是测试类里面的函数. 单元测试的本质  测试函数 代码级别 单元测试框架 unittest 接口  pytest  web 功能测试: 1.写用例 ----> TestCase ...