弗洛伊德算法计算所有顶点对之间最短通路的长度
来源:互联网 发布:java tempfile 编辑:程序博客网 时间:2024/05/18 00:16
//弗洛伊德算法计算所有顶点对之间最短通路的长度// procedure Floyd(G:带权简单图)// {G有顶点v1.v2....vn和权}// for i= 1 to n/// for j= 1 to n// d(vi,vj)=w(i,j)//// for i= 1 to n/// for j= 1 to n// for k= 1 to n// if d(vj,vi)+d(vi,vk)<d(vj,vk)// then d(vj,vk) = d(vj,vi)+d(vi,vk)// d(vi,vj)是在vi到vj之间的最短通路//这个算法是计算所有顶点对之间最短通路的长度//具体实现,应该要用到保存所有顶点对之间最短通路的长度的存贮单位(这里使用了二维数组存贮)/*粘贴输入下列测试数据 6 90 1 40 2 21 2 11 3 52 3 82 4 103 4 23 5 64 5 3'''''''''''''''''''''''''''''''''''''''''''''''''0 4 2 32767 32767 327674 0 1 5 32767 327672 1 0 8 10 3276732767 5 8 0 2 632767 32767 10 2 0 332767 32767 32767 6 3 00 ,0:00 ,1:30 ,2:20 ,3:80 ,4:100 ,5:131 ,1:01 ,2:11 ,3:51 ,4:71 ,5:102 ,2:02 ,3:62 ,4:82 ,5:113 ,3:03 ,4:23 ,5:54 ,4:04 ,5:35 ,5:0Press any key to continue*/#include <iostream>using namespace std;//012345分别表示v0 v1...... int v;//////点数目 int edge;///边数目int** draw(int ** &l);//绘图void shuchu(int **l);//输出int main(int argc, char const *argv[]){ int **l; int**a=draw(l);//------------------------------------------------------------------------////------------------------------------------------------------------------// int i,j,k; for ( i = 0; i < v; ++i) for ( j = 0; j < v; ++j) for (k = 0; k < v; ++k) if (l[j][i] + l[i][k] < l[j][k]) l[j][k] = l[j][i] + l[i][k]; //------------------------------------------------------------------------// shuchu(l); return 0;}int** draw(int ** &l)//绘图{ int i,j; cin>>v>>edge;///输入点数目和边数目 int **a=new int*[v]; for ( i = 0; i < v; ++i) a[i]=new int[v]; l=new int*[v]; for ( i = 0; i < v; ++i) l[i]=new int[v]; for ( i = 0; i < v; ++i) for ( j = 0; j < v; ++j) {if(i==j){a[i][j]=0;l[i][j]=0;continue;}a[i][j]=32767;l[i][j]=32767;} int spot1,spot2,len; for ( i = 0; i < edge; ++i) { cin>>spot1>>spot2>>len; a[spot1][spot2]=len; a[spot2][spot1]=len; l[spot1][spot2]=len; l[spot2][spot1]=len; }///-------------------------------------------------------------/// for ( i = 0; i < v; ++i){ for ( j = 0; j < v; ++j) cout<<a[i][j]<<" "; cout<<"\n"; } cout<<"\n"; return a;}void shuchu(int **l){int i,j; for ( i = 0; i < v; ++i) for ( j = i; j < v; ++j) cout<<i<<" ,"<<j<<":"<<l[i][j]<<"\n";}
0 0
- 弗洛伊德算法计算所有顶点对之间最短通路的长度
- 图——所有顶点之间的最短路径问题-弗洛伊德算法
- 每队顶点之间的最短路径(弗洛伊德算法)
- 弗洛伊德算法求每一对顶点之间的最短路径
- 每一对顶点之间的最短路径(Floyd弗洛伊德算法)
- 弗洛伊德算法(每一对顶点之间的最短路径)
- 图——每对顶点之间的最短路径 ——弗洛伊德算法
- 所有顶点之间的最短路径算法:Floyd算法。
- 所有顶点对之间的最短路径
- 所有顶点对之间的最短路径之Floyd-Warshall算法
- 弗洛伊德算法得到图中任意两个顶点之间的最短路径
- Floyd(弗洛伊德算法)---每对顶点的最短路径---《数据结构》严蔚敏
- 利用弗洛依德算法求GA表示的途中的没对顶点之间的最短长度
- Floyd-Warshall(弗洛伊德)算法求所有节点对的最短路径问题
- 动态规划---->每对定点之间的最短路径 Floyd(弗洛伊德)算法
- 弗洛伊德变种算法计算最短路径
- 所有顶点之间的最短路径——Floyd算法
- 【算法导论】每对顶点之间的最短路径算法
- sed
- 书籍
- liunx DNS
- Effective STL
- 应用与rac的连接
- 弗洛伊德算法计算所有顶点对之间最短通路的长度
- Linux进程切换以及内核线程的返回值
- Effective STL 读书笔记
- Android开发布局
- javascript 实现MD5加密
- android 调用 webService
- mysql in 子查询 效率慢 优化(转)
- AS3静态代码块的初始化使用方法
- 弗洛伊德变种算法计算最短路径