问题概述:成都的大街上有n个路口,标号为1的路口是学校所在地,标号为n的路口是家所在地,m则表示在成都有几条路,输入3个整数a、b、c表示从a路口到b路口有路可走,且要花费c分钟,求从学校到家最短时间

输入样例:                                  对应输出:

3 3                                               2

1 2 5

2 3 5

3 1 2

Floyd算法:

功能:可以求出任意两点的最短路

适用:有向图 √ 无向图 √ 权值为正 √ 权值为负 ×

复杂度:n³(复杂度很高)

核心:通过枚举n个点利用DP的思想来更新最短距离,假设当前枚举到第k个点,对于任意的两个点i和j,如果i-k可以相连且k-j可以相连,那么就有"dis[i][j] = min(dis[i][j], dis[i][k]+dis[k][j]);",只要枚举完n个点,就说明已经完全更新完所有两点直间的最短路

本质是个DP,代码里有注释

#include<stdio.h>
#include<limits.h>
int main(void)
{  int a, b, c, i, k, j, n, m, d[105][105];  while(scanf("%d%d", &n, &m), n!=0 || m!=0){  for(i=1;i<=n;i++){d[i][i] = 0;for(j=1;j<=i-1;j++)  d[i][j] = d[j][i] = INT_MAX;  /*没有路的地方设为权值设为INT_MAX*/}for(i=1;i<=m;i++){  scanf("%d%d%d",&a,&b,&c);  d[a][b] = d[b][a] = c;   }   for(k=1;k<=n;k++)  /*从i走到j是否经过k点(可以更快),这个k一定要在最外层循环,这样可以保证对于k-1,i到j的路程已经最优*/{  for(i=1;i<=n;i++){  for(j=1;j<=n;j++){if(d[i][k]!=INT_MAX && d[k][j]!=INT_MAX && d[i][k]+d[k][j]<d[i][j])d[i][j] = d[i][k]+d[k][j];  }}  }printf("%d\n", d[1][n]);  }  return 0;
}

基础Floyd--任意两点间最短路相关推荐

  1. 图论 ---- F. The Shortest Statement (最短路的性质 + 任意两点间最短路 + 图转树)

    题目链接 题目大意: 给你一个nnn个点mmm条边的无向图,就是动态询问任意两点间的最短路 n,m∈[1,1e5],m−n≤20n,m\in[1,1e5],m-n\leq20n,m∈[1,1e5],m ...

  2. 地铁线路图中任意两点间所有路径高效算法

    在求图线任意两点间最短路径时,利用floyd.dijdstra等成熟的算法可以求得,效率还不错.但要求换乘最少.最舒适等路径时,需要求线网图中任意两个点的所有路径,然后根据条件筛选,以上算法无能为力. ...

  3. AOJ GRL_1_C: All Pairs Shortest Path (Floyd-Warshall算法求任意两点间的最短路径)(Bellman-Ford算法判断负圈)

    题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_C All Pairs Shortest Path Input ...

  4. 【算法】Floyd-Warshall算法(任意两点间的最短路问题)(判断负圈)

    问题 求解任意两点间最短路问题也叫多源最短路径问题. 可解决途径 一种方法时把图中每个点当做源点重复算n次Dijkstra 算法(Dijkstra是求单源最短路径的算法),时间复杂度O(n^3),据说 ...

  5. matlab求两点间距离,matlab如何求一个N*2的矩阵的任意两点间的距离?

    matlab如何求一个N*2的矩阵的任意两点间的距离? mip版  关注:64  答案:3  悬赏:0 解决时间 2021-02-23 20:55 已解决 2021-02-23 16:37 假设有个矩 ...

  6. 任意两点间的最短路问题(Floyd-Warshall算法)

    /* 任意两点间的最短路问题(Floyd-Warshall算法)*/import java.util.Scanner;public class Main {//图的顶点数,总边数static int ...

  7. golang计算任意两点间的方位角

    计算任意两点间的方位角 方位角是从某点的指北经线起,依顺时针方向到目标方向线之间的水平夹角(如图所示θ,可以将其看成是指南针所指示的角度),也即是OPN平面与OPQ平面的所构成的二面角大小. 以北极点 ...

  8. 计算球面上任意两点间的球面距离(C++实现)

    文章目录 1 预备知识 2 原理描述 3 代码实现 1 预备知识 在求解此问题之前首先要明确一下几点: (1)两点间的球面距离: 球面上两点间的最短距离,即球心与球面上两点所确定的平面与球面相交,得到 ...

  9. 基于百度地图API计算任意两点间的出行距离

    文章目录 前言 使用步骤 1.导入相关包 2.计算小汽车距离 3.计算骑行距离 4.创建主函数 总结 前言 为了方便自己以后查找代码,也不想让自己的桌面变得凌乱不堪,所以将把自己之前的代码保存到这里面 ...

最新文章

  1. UVa572 Oil Deposits DFS求连通块
  2. 【题解】 CF718C Sasha and Array
  3. 分布式配置中心disconf第三部(基于xml配置的实现原理)
  4. Galgame研发日志:美术工作实乃重中之重
  5. [置顶]android ListView包含Checkbox滑动时状态改变
  6. 量子科技概念大火,国内现状如何?华为BAT均入局量子计算
  7. MASM32使用教程
  8. java基础语法(二)--单列模式
  9. Bing Maps开发扩展三:Bing Maps中渲染ESRI SHP空间数据
  10. 设计模式在实际业务应用中的介绍之3——外观或门面模式Facade对AOP装配业务工厂的应用...
  11. bootstrape常用标签_bootstrap 常用data
  12. 2022年C语言程序设计题库习集带答案(史上最全版)
  13. Soul是一个基于兴趣、场景、算法搭建的“第三空间”?
  14. Scratch编程与数学之求累加和!
  15. 计算机出错英语翻译,计算机各种错误信息翻译
  16. java设计模式4,不要和陌生人说话
  17. linux教程试卷_linux基础教程试卷及答案.doc
  18. putty怎么连到linux服务器,PuTTY 从 Windows 连接到 亚马逊服务器Linux 实例
  19. 《第五项修炼——学习型组织的艺术与实务》读后感
  20. 中国行政区边界线下载(省,市,区县、乡镇边界线)

热门文章

  1. python语言的读法-python是什么语言编写的
  2. python编程入门指南-Python编程初学者指南 PDF扫描版[87MB]
  3. python能做什么工作-学完Python我们可以做什么工作?
  4. 语音识别的准确率,永远达不到100%?
  5. 【手机开发岗位职责|手机开发是做什么的】-看准网
  6. 百度DOC php,PHP对接百度文档服务DOC
  7. this.$router.push用query传参对象时需注意的地方
  8. 用php写圣诞祝福页面,圣诞祝福文案 抖音圣诞节一句话祝福
  9. android蓝牙控制继电器——手机客户端的实现
  10. LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR的区分与转化