码迷,mamicode.com
首页 > 其他好文 > 详细

最短路径 Floyd && spfa

时间:2016-02-06 01:44:04      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

floyd算法是一个很强大的算法,它可以计算任意两点之间的最短路径,其边可以为负值。
时间复杂度n^3

技术分享
 1 void floyd()
 2 {
 3     int k,u,v;
 4     for(k=0;k<G.vunm;k++)
 5         for(u=0;u<G.vunm;u++)
 6             for(v=0;v<G.vunm;v++)
 7             {
 8                 if(D[u][v]>D[u][k]+D[k][v])
 9                 {
10                     D[u][v]=D[u][k]+D[k][v];
11                 }
12             }
13     printf("%d\n",D[s][t]==MAX?-1:D[s][t]);
14 }
Floyd 模板

 

 

补充一下:对于floyd判断负环是否存在只需检查是否存在d[i][i]是负数的顶点i 即可

最短路径 Floyd && spfa

标签:

原文地址:http://www.cnblogs.com/WDKER/p/5183771.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!