Floyd算法 - 最短路径
2024-09-06 12:51:00
2017-07-27 22:21:04
writer:pprp
该算法的本质是动态规划,形式简单,复杂度高为O(n^3);
d[i][j] = max(d[i][k]+d[k][j],d[i][j]);
采用的基本手段是松弛
适用:解决多源最短路径问题
代码如下:
#include <iostream> using namespace std; const int maxn = ; int n,s,t;
int a[maxn+][maxn+]; void init()
{
int m,u,v;
cin >> n >> m;
for(int i =; i<=n; i++)
for(int j =; j<=n; j++)
a[i][j] = -;
for(int i = ; i<=m; i++)
cin >> u >> v >> a[u][v];
cin >> s >> t;
} void floyd()
{
int i,j,k;
for(k=; k<=n; k++)
for(i=; i<=n; i++)
for(j=; j<=n; j++)
{
if(a[i][k]!=-&&a[k][j]!=-)
a[i][j] = min(a[i][j],a[i][k]+a[k][j]);
}
} int main()
{
init();
floyd();
cout << a[s][t]+a[t][s]<<endl;
return ;
}
最新文章
- hdu 5506 GT and set dfs+bitset优化
- iOS-多线程 ,整理集锦,多种线程的创建
- ggplo2学习笔记——基本图形类型
- Mysql 对数字的格式化
- UVa 10674 (求两圆公切线) Tangents
- iOS开发中EXC_BAD_ACCESS的另类原因
- Response.Write() Alert后页面布局改变
- ORACLE数据库SQL优化 not in 与not exits
- laravel 核心类Kernel
- day03-课堂笔记
- 多线程系列之五:Balking 模式
- socket基础编程-1
- 【XSY2703】置换 数学 置换 DP
- 基于Angular+WebAPI+OData的增删改查
- java阶段学习目标
- c面试题总结
- HDU 4462Scaring the Birds(枚举所有状态)
- python之选择排序
- shell编程(二)
- OKR学习总结