多源最短路径之Floyd算法
来源:互联网 发布:身份证识别器录入软件 编辑:程序博客网 时间:2024/05/22 18:22
#include<cstdio>#include<cstring>#include<iostream>#define MAX 999using namespace std;int n,m;int e[MAX][MAX];void Init(){ for(int i=1; i<=n; ++i) for(int j=1; j<=n; ++j) { if(i==j) e[i][j]=0; else e[i][j]=MAX; }}void Input(){ int a,b,c; for(int i=1; i<=m; ++i) { cin>>a>>b>>c; e[a][b]=c; }}void Floyd(){ for(int k=1; k<=n; k++) for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) if(e[i][j]>e[i][k]+e[k][j]) e[i][j]=e[i][k]+e[k][j];}void Output(){ for(int i=1; i<=n; ++i) for(int j=1; j<=n; ++j) cout<<"dis["<<i<<"]["<<j<<"] = "<<e[i][j]<<endl;}int main(){ while(1) { cout<<"n"<<endl;//顶点个数 cin>>n; if(!n) break; cout<<"m"<<endl;//边的个数 cin>>m; Init(); Input(); Floyd(); Output(); }}
Floyd算法是求多点最短路径的一种算法,其核心代码为
void Floyd()
{
for(int k=1; k<=n; k++)
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
if(e[i][j]>e[i][k]+e[k][j])
e[i][j]=e[i][k]+e[k][j];
}
阅读全文
0 0
- 多源最短路径之Floyd算法
- 多源最短路径floyd算法
- Floyd 多源最短路径算法
- 多源最短路径Floyd算法
- Floyd算法--多源最短路径
- Floyd多源最短路径算法
- 多源最短路径--floyd算法
- floyd算法 多源最短路径
- 求最短路径算法之Floyd算法
- 多源最短路径--Floyd-Warshall算法
- 多源最短路径算法---Floyd-Warshall
- 最短路径之Dijkstra+Floyd算法
- 求最短路径之——Floyd算法
- 最短路径之Floyd算法
- 最短路径之Floyd-Warshell算法
- 最短路径之Floyd算法
- 最短路径之Floyd-Warshell算法
- 最短路径之弗洛伊德算法(Floyd)
- 这个超时了的对程序(1到n中y数字出现了几次)
- Verilog数组初始化赋值
- 数字反转,哈哈哈(无缺陷)
- ADM Radeon R9 NANO参数
- 其他的搜索引擎
- 多源最短路径之Floyd算法
- 学习总结
- 第一次数组
- 问题以及解决方案
- 通过树莓派的openOCD远程给STM32下程序(JLink方式)
- Android之NDK开发(一)C语言初识
- twisted中Deferred对象callback返回值为Deferred对象时
- hdu2092 整数解(C语言)
- 51nod 1116 K进制下的大数