[Hackerrank] Floyd : City of Blinding Lights
来源:互联网 发布:php addslashes和gpc 编辑:程序博客网 时间:2024/06/08 11:52
之前一直没有关注Floyd算法,因为觉得它的时间复杂度很高不实用,但是见到这题才真正了解它的优点:能够获得多源最短路。大致的循环思路是:
a) 初始化:D[u,v]=A[u,v]
b) For k:=1 to n
For i:=1 to n
For j:=1 to n
If D[i,j]>D[i,k]+D[k,j] Then
D[i,j]:=D[i,k]+D[k,j];
c) 算法结束:D即为所有点对的最短路径矩阵
#include <bits/stdc++.h>using namespace std;int edge[402][402];int dis[402][402];int n,m;const int infinity = 10000000;void Floyd(){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){dis[i][j] = edge[i][j];}}for(int h=1;h<=n;h++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){dis[i][j] = min(dis[i][j],dis[i][h]+dis[h][j]);}}}}int main(){for(int i = 0;i<=400;i++){for(int j=0;j<=400;j++){if(i!=j) edge[i][j] = infinity;else edge[i][j] = 0;}} cin>>n>>m; int x,y,r; for(int i = 0;i<m;i++) { cin>>x>>y>>r; edge[x][y] = r; } Floyd(); int q; cin>>q; while(q--) { cin>>x>>y; if(dis[x][y]<infinity) cout<<dis[x][y]<<endl; else cout<<"-1"<<endl; } return 0;}
0 0
- [Hackerrank] Floyd : City of Blinding Lights
- Hackerrank - Game Of Rotation 题解
- 【HackerRank】 Game Of Thrones - I
- hackerrank Week of Code Target
- [HackerRank]Week Of Code 23
- [hackerrank Value of all Permutations]
- HackerRank - organizing-containers-of-balls
- HackerRank - organizing-containers-of-balls
- Hackerrank Week of Code 32
- hackerrank Organizing Containers of Balls
- City of Angels
- City of Angel
- city of angle
- hackerRank
- HackerRank
- HackerRank
- HackerRank
- HackerRank
- Binary Indexed Tree(二进制索引树、树状数组)
- c++第七次实验(项目2:最大公约和和最小公倍数)
- 作业七
- C++第7次作业
- Volley工作原理与设计模式
- [Hackerrank] Floyd : City of Blinding Lights
- Volley网络请求框架
- Volley缓存原理
- c++第七次上机实验
- 二叉搜索(排序)树的 查找、插入、删除
- mysql碎片知识(一般信息)
- mac实用tips
- 练习2-6 编写一个函数setbits(x,p,n,y),将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值
- 实验七-最大公约和和最小公倍数