最短路径 Floyd && spfa
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最短路径 Floyd && spfa相关的知识,希望对你有一定的参考价值。
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判断负环是否存在只需检查是否存在d[i][i]是负数的顶点i 即可
以上是关于最短路径 Floyd && spfa的主要内容,如果未能解决你的问题,请参考以下文章