众所周知,Floyd是来求最短路问题的算法

最短路径问题是图论研究中的一个经典算法问题, 指在寻找图(由结点和路径组成的)中两结点之间的最短路径。
例如:

Floyd是用了DP的思想
决策需要枚举中转点,不妨考虑也以中转点集为阶段
F[k,i,j]表示”可以经过标号≤k的点中转时”从i到j的最短路
F[0,i,j]=dis[i,j],dis为前面定义的邻接矩阵
F[k,i,j]=min{F[k-1,i,j] , F[k-1,i,k]+F[k-1,k,j]},O(N^3)
k这一维空间可以省略,变成F[i,j]
就成为了我们平时常见的Floyd算法
由于k是DP的阶段循环,所以k循环必须要放在最外层


例题:

样例

样例输入

5  7
1 2 10
1 4 30
1 5 100
2 3 50
3 5 10
4 3 20
4 5 60
1 5

样例输出

60
1 4 3 5

这是一道板题,把Floyd套上就完事了

正解
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int MAXN = 505;
int dp[MAXN][MAXN], pr[MAXN][MAXN];
int s, t;
int n, m;
void Read() {int i, j;scanf("%d %d", &n, &m);for(i = 1; i <= m; i++) {int A, B, C;scanf("%d %d %d", &A, &B, &C);dp[A][B] = C;pr[A][B] = A;}
}
void Write(int x) {if(pr[s][x] == 0)return;Write(pr[s][x]);printf(" %d", x);
}
int main() {int i, j, k;memset(dp, 0x3f, sizeof(dp));Read();for(i = 1; i <= n; i++)dp[i][i] = 0;for(k = 1; k <= n; k++) {for(i = 1; i <= n; i++) {for(j = 1; j <= n; j++) {int t = dp[i][j];if(dp[i][k] + dp[k][j] < dp[i][j]) {dp[i][j] = dp[i][k] + dp[k][j];pr[i][j] = pr[k][j];}}}}scanf("%d %d", &s, &t);printf("%d\n%d", dp[s][t], s);Write(t);return 0;
}

Floyd 算法+例题相关推荐

  1. Floyd算法、Dijkstra算法例题

    二 1.用Floyd算法求解下图各个顶点的最短距离. 2.对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径. 2.解析 1)用Floyd算法求解各个顶点的最短距离. 第一步:画出初始化距离 ...

  2. 最短路径——Floyd算法HDU Today(hdu2112)

    最短路径问题是图论研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径. 算法具体的形式包括: 确定起点的最短路径问题 - 即已知起始结点,求最短路径的问题. 确定终点的 ...

  3. 【数据结构笔记24】单源最短路(迪克斯拉Dijkstra算法),多源最短路(弗洛伊德Floyd算法)

    本次笔记内容: 7.1.1 概述 7.1.2 无权图的单源最短路 7.1.3 有权图的单源最短路 7.1.3-s 有权图的单源最短路示例 7.1.4 多源最短路算法 文章目录 最短路径问题 最短路径问 ...

  4. python银行家算法例题详解_攒人品之作-能考408大题的知识点整理(有两个知识点的补充)...

    本帖最后由 wudi971 于 2014-1-5 17:47 编辑 ::98::明年出题那么综合,我对不起大家...::116:: 经过陈123同学的提醒,补充两个知识点: 组成原理的微指令的设计以及 ...

  5. 最短路算法 :Bellman-ford算法 Dijkstra算法 floyd算法 SPFA算法 详解

     本文链接   :http://www.cnblogs.com/Yan-C/p/3916281.html . 在本文中因为邻接表在比赛中不如前向星好写,而且前向星效率并不低所以,本文的代码 存图只 ...

  6. Floyd算法的应用

    Floyd算法的应用 Floyd算法 算法过程 算法特点 最短路问题 求传递闭包 什么是传递闭包 算法过程 算法模板 例题 最小环问题 求最小环权值 算法过程 算法模板 求最小环路径 算法过程 代码模 ...

  7. Python Floyd算法求最短路径

    Floyd算法简介: Floyd算法 floyd算法(多源最短路径) python实现 例题 求下图各节点最短路径 Floyd算法如下: from math import * import numpy ...

  8. 数据结构与算法(7-4)最短路径(迪杰斯特拉(Dijkstra)算法、弗洛伊德(Floyd)算法)

    目录 一.最短路径概念 二.迪杰斯特拉(Dijkstra)算法(单源最短路径) 1.原理 2.过程 3.代码 三.弗洛伊德(Floyd)算法(多源最短路径) 1.原理 2.存储 3.遍历 4.代码 参 ...

  9. 【POJ/算法】 3259 Wormholes(Bellman-Ford算法, SPFA ,FLoyd算法)

    Bellman-Ford算法 Bellman-Ford算法的优点是可以发现负圈,缺点是时间复杂度比Dijkstra算法高.而SPFA算法是使用队列优化的Bellman-Ford版本,其在时间复杂度和编 ...

最新文章

  1. 食物链 poj 1182
  2. 理解Windows中的路由表和默认网关
  3. 终极会话劫持工具SSClone
  4. Android recycleview使用详解,recycleview实现九宫格布局即横向排列,recycleview设置item占位数量大号item或小号item
  5. 图形化界面客户端连接phoenix操作hbase
  6. php 常用函数 180,php 部分常用函数
  7. python的if循环语句_第二个是Python的循环语句,基础,使用,if,条件,判断,while,for
  8. NHibernate入门实例
  9. 中国1-(4-羟基苯基)乙酮市场趋势报告、技术动态创新及市场预测
  10. arcgis利用Model Builder构建器进行批量处理数据
  11. 模式识别经典算法——LDA
  12. LaTex数学符号公式
  13. Ubuntu环境下读取罗技G29方向盘信息
  14. 学习率设置-warm up与consine learning rate
  15. 五天带你学完《计算机网络》,期末考试不挂科
  16. 重温计算机简史:IBM的风云父子兵和硅谷的诞生
  17. pymysql无法访问本地计算机,使用Python和odo模块在mysql上加载csv时出错
  18. 10-224 查询比“网络工程”专业所有学生年龄都小的学生姓名
  19. Python读取csv文件出现\ufeff
  20. python微信公众号翻译功能_使用python在SAE上搭建一个微信应用,使用有道翻译的api进行在线翻译...

热门文章

  1. 消防应急照明和疏散指示系统
  2. linux服务器查看显卡信息
  3. 人人都能懂的贝叶斯统计:原理与实践
  4. carsim转向扭矩控制-开环控制设置
  5. LL(1)分析法(C++实现)
  6. maya linux 安装教程视频,教你怎样在 Archlinux 安装Maya7.01
  7. 数学常识--数学符号常识
  8. 什么是开发平台? 几句话就让你明白!
  9. 【CSS】1088- CSS 快速实现烟花绽放
  10. 单端通用ISM频段接收器 Si4313