基础Floyd--任意两点间最短路
问题概述:成都的大街上有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--任意两点间最短路相关推荐
- 图论 ---- F. The Shortest Statement (最短路的性质 + 任意两点间最短路 + 图转树)
题目链接 题目大意: 给你一个nnn个点mmm条边的无向图,就是动态询问任意两点间的最短路 n,m∈[1,1e5],m−n≤20n,m\in[1,1e5],m-n\leq20n,m∈[1,1e5],m ...
- 地铁线路图中任意两点间所有路径高效算法
在求图线任意两点间最短路径时,利用floyd.dijdstra等成熟的算法可以求得,效率还不错.但要求换乘最少.最舒适等路径时,需要求线网图中任意两个点的所有路径,然后根据条件筛选,以上算法无能为力. ...
- 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 ...
- 【算法】Floyd-Warshall算法(任意两点间的最短路问题)(判断负圈)
问题 求解任意两点间最短路问题也叫多源最短路径问题. 可解决途径 一种方法时把图中每个点当做源点重复算n次Dijkstra 算法(Dijkstra是求单源最短路径的算法),时间复杂度O(n^3),据说 ...
- matlab求两点间距离,matlab如何求一个N*2的矩阵的任意两点间的距离?
matlab如何求一个N*2的矩阵的任意两点间的距离? mip版 关注:64 答案:3 悬赏:0 解决时间 2021-02-23 20:55 已解决 2021-02-23 16:37 假设有个矩 ...
- 任意两点间的最短路问题(Floyd-Warshall算法)
/* 任意两点间的最短路问题(Floyd-Warshall算法)*/import java.util.Scanner;public class Main {//图的顶点数,总边数static int ...
- golang计算任意两点间的方位角
计算任意两点间的方位角 方位角是从某点的指北经线起,依顺时针方向到目标方向线之间的水平夹角(如图所示θ,可以将其看成是指南针所指示的角度),也即是OPN平面与OPQ平面的所构成的二面角大小. 以北极点 ...
- 计算球面上任意两点间的球面距离(C++实现)
文章目录 1 预备知识 2 原理描述 3 代码实现 1 预备知识 在求解此问题之前首先要明确一下几点: (1)两点间的球面距离: 球面上两点间的最短距离,即球心与球面上两点所确定的平面与球面相交,得到 ...
- 基于百度地图API计算任意两点间的出行距离
文章目录 前言 使用步骤 1.导入相关包 2.计算小汽车距离 3.计算骑行距离 4.创建主函数 总结 前言 为了方便自己以后查找代码,也不想让自己的桌面变得凌乱不堪,所以将把自己之前的代码保存到这里面 ...
最新文章
- UVa572 Oil Deposits DFS求连通块
- 【题解】 CF718C Sasha and Array
- 分布式配置中心disconf第三部(基于xml配置的实现原理)
- Galgame研发日志:美术工作实乃重中之重
- [置顶]android ListView包含Checkbox滑动时状态改变
- 量子科技概念大火,国内现状如何?华为BAT均入局量子计算
- MASM32使用教程
- java基础语法(二)--单列模式
- Bing Maps开发扩展三:Bing Maps中渲染ESRI SHP空间数据
- 设计模式在实际业务应用中的介绍之3——外观或门面模式Facade对AOP装配业务工厂的应用...
- bootstrape常用标签_bootstrap 常用data
- 2022年C语言程序设计题库习集带答案(史上最全版)
- Soul是一个基于兴趣、场景、算法搭建的“第三空间”?
- Scratch编程与数学之求累加和!
- 计算机出错英语翻译,计算机各种错误信息翻译
- java设计模式4,不要和陌生人说话
- linux教程试卷_linux基础教程试卷及答案.doc
- putty怎么连到linux服务器,PuTTY 从 Windows 连接到 亚马逊服务器Linux 实例
- 《第五项修炼——学习型组织的艺术与实务》读后感
- 中国行政区边界线下载(省,市,区县、乡镇边界线)
热门文章
- python语言的读法-python是什么语言编写的
- python编程入门指南-Python编程初学者指南 PDF扫描版[87MB]
- python能做什么工作-学完Python我们可以做什么工作?
- 语音识别的准确率,永远达不到100%?
- 【手机开发岗位职责|手机开发是做什么的】-看准网
- 百度DOC php,PHP对接百度文档服务DOC
- this.$router.push用query传参对象时需注意的地方
- 用php写圣诞祝福页面,圣诞祝福文案 抖音圣诞节一句话祝福
- android蓝牙控制继电器——手机客户端的实现
- LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR的区分与转化