Floyd算法解决多源最短路问题
说好的写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算法解决多源最短路问题的更多相关文章
- Floyd算法 解决多元汇最短路问题
接下来是图论问题求解最短路问题的最后一个,求解多元汇最短路问题 我们之前一般都是问1-n的最短路径,这里我们要能随便去问i到j的最短路径: 这里介绍一下Floyd算法:我们只有一个d[maxn][ma ...
- Floyd算法解决多源最短路径问题
Floyd-Warshall算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权(但不可存在负权回路)的最短路径问题,同时也被用于计算有向图的传递闭包. Floyd-Warshall算法 ...
- dijkstra算法解决单源最短路问题
简介 最近这段时间刚好做了最短路问题的算法报告,因此对dijkstra算法也有了更深的理解,下面和大家分享一下我的学习过程. 前言 呃呃呃,听起来也没那么难,其实,真的没那么难,只要弄清楚思路就很容易 ...
- Bellman-Ford算法解决单源最短路问题
#include<stdio.h> #include<stdlib.h> #include<stdbool.h> #define max 100 #define I ...
- Floyd 算法求多源最短路径
Floyd算法: Floyd算法用来找出每对顶点之间的最短距离,它对图的要求是,既可以是无向图也可以是有向图,边权可以为负,但是不能存在负环(可根据最小环的正负来判定). 基本算法: Floyd算法基 ...
- Dijkstra算法解决单源最短路径
单源最短路径问题:给定一个带权有向图 G = (V, E), 其中每条边的权是一个实数.另外,还给定 V 中的一个顶点,称为源.现在要计算从源到其他所有各顶点的最短路径长度.这里的长度是指路上各边权之 ...
- Floyd算法解决最短路径问题
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 万圣节的中午,A和B在吃过中饭之后,来到了一个新的鬼屋!鬼屋中一共有N个地点,分别编号为1..N,这N个地点之间互相有一些 ...
- 多源最短路径,一文搞懂Floyd算法
前言 在图论中,在寻路最短路径中除了Dijkstra算法以外,还有Floyd算法也是非常经典,然而两种算法还是有区别的,Floyd主要计算多源最短路径. 在单源正权值最短路径,我们会用Dijkstra ...
- 最短路-SPFA算法&Floyd算法
SPFA算法 算法复杂度 SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环. SPFA一般情况复杂度是O(m)最坏情况下复杂度和朴素 ...
随机推荐
- Marshal.PtrToStringAnsi中文乱码
出错代码: string dec = Marshal.PtrToStringAnsi(audioOutput.psz_description);//输出 鎵0鍣?(Realtek High Defi ...
- linux编译相关命令
一.编译可执行文件 g++ –c Hello.cpp 编译文件,生成目标文件Hello.o g++ Hello.o –o a.out 链接并重命名为可执行文件a.out g++ Hello.cc ...
- docker基础命令汇总
搜索镜像 docker search 镜像名称 例如:docker search centos7 下载镜像 docker pull 镜像名称 例如:docker pull centos7 启动容器 d ...
- JavaScript 变量声明:var、let、const
1. 概述 1.1 说明 在ES5 声明变量的方法:var命令和function命令. 在ES6 声明变量的方法:var命令.function命令.let命令.const命令.import命令.cla ...
- Django 之 流程和命令行工具
一.一个简单的web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所 ...
- docker bulid命令
使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1. docker build -t runoob/ubuntu:v1 . 使用URL github.com/cr ...
- SpringBoot的@Enable*注解的使用介绍
@EnableAsync或@EnableConfigurationProperties背后的运行原理,是使用了@Import注解. @Import({User.class,Role.class,MyC ...
- [转]centos7 安装jdk11 并设置默认java版本
https://www.server-world.info/en/note?os=CentOS_7&p=jdk11&f=2 OpenJDK 11 : Install 2018/10/1 ...
- Python2.7和3.7区别
区别一:print语法使用 Python2.7 print语法使用 >>> print "Hello Python" Python3.7 print语 ...
- python_web框架
一.web框架 web框架: 自己完成socket的web框架:如,Tornado等 由WSGI完成socket的web框架:如,Django.flash等 两种实现过程: 第二种WSGI方式的,由于 ...