用最基本的弗洛伊德算法求1到n的最短路径
来源:互联网 发布:淘宝充话费可以退款吗 编辑:程序博客网 时间:2024/05/17 13:40
<span style="font-size:24px;">弗洛伊德一般只适合100个点以内的题,因为弗洛伊德的时间复杂度为n的三次方,如果点太多容易超时,而且,它也不能求有负环的题,如果遇到有负环的题最好用贝尔曼-福特算法</span>
#include <stdio.h>#include <string.h>#define maxnum 1000#define maxint 0x3f3f3f3fint map[maxnum][maxnum];int n,m;void Floyd() //弗洛伊德算法{ int k,i,j; for(k=1; k<=n; k++) //中转点控制最外边的循环 for(i=1; i<=n; i++) //其次是起点控制循环 for(j=1; j<=n; j++) //最内层的循环是终点控制的 if(map[i][j]>map[i][k]+map[k][j]) map[i][j]=map[i][k]+map[k][j];}int main(){ int i,x,y,z,j; while(~scanf("%d %d",&n,&m)) { memset(map,maxint,sizeof(map)); //先都设成最大值 for(i=1; i<=m; i++) //开始建无向图 { scanf("%d %d %d",&x,&y,&z); if(z<map[x][y]) { map[x][y]=z; map[y][x]=z; } } for(i=1; i<=n; i++) for(j=1; j<=n; j++) if(i==j) map[i][j]=0; //记得到本身的距离为零 Floyd(); printf("%d\n",map[1][n]); }}
0 0
- 用最基本的弗洛伊德算法求1到n的最短路径
- 弗洛伊德(Floyd)算法求图的最短路径
- 弗洛伊德最短路径算法
- 弗洛伊德算法--最短路径
- 最短路径-弗洛伊德算法
- 弗洛伊德最短路径算法
- 最短路径(弗洛伊德算法)
- 最短路径--弗洛伊德算法
- 最短路径:弗洛伊德算法
- 弗洛伊德最短路径算法
- 弗洛伊德最短路径算法
- 最短路径---弗洛伊德算法
- 最短路径(弗洛伊德算法)
- 弗洛伊德算法求每一对顶点之间的最短路径
- Floyd-Warshall(弗洛伊德)算法求所有节点对的最短路径问题
- 弗洛伊德(Floyd)算法求解图的最短路径
- 图的最短路径弗洛伊德Floyd算法
- 每队顶点之间的最短路径(弗洛伊德算法)
- Android SDK开发包国内下载地址
- 1046. Shortest Distance (20)
- Axis2 生成 webService 的client端过程
- Android中Activity四种加载模式
- Android应用经典主界面框架之一:仿QQ (使用Fragment, 附源码)
- 用最基本的弗洛伊德算法求1到n的最短路径
- 下拉列表根据所选Item选中某个值
- Redis监控技巧
- 【ExtJS】图片编辑器imagefield
- 画直方图,自动色阶
- 理解矩阵
- vc读写注册表实例
- 安全性测试工具AWS
- 【java learning】Something for Class String