Matrix Floyd/Warshall算法mod在最大长度k处找到最便宜的路径
我正在编辑Floyd的算法,所以不是每个Dk,其中k是最高的中间顶点,k是最大路径长度。最终,它将拥有与Floyd相同的输出,但每个子迭代都可能不同。例如,如果有4个顶点:0,1,2,3,我想找到从0到3的最便宜的路径,其最大长度为K。该图假定为有向图 所以如果k=2,那么我只能检查0->3…0->1->3…0->2->3,其中每个箭头都指示一条边/路径。如果k=3,那么我只能选择0->3…0->1->3…0->1->2->3…0->2->3…0->2->1->3等Matrix Floyd/Warshall算法mod在最大长度k处找到最便宜的路径,matrix,shortest-path,floyd-warshall,Matrix,Shortest Path,Floyd Warshall,我正在编辑Floyd的算法,所以不是每个Dk,其中k是最高的中间顶点,k是最大路径长度。最终,它将拥有与Floyd相同的输出,但每个子迭代都可能不同。例如,如果有4个顶点:0,1,2,3,我想找到从0到3的最便宜的路径,其最大长度为K。该图假定为有向图 所以如果k=2,那么我只能检查0->3…0->1->3…0->2->3,其中每个箭头都指示一条边/路径。如果k=3,那么我只能选择0->3…0->1->3…0->1->2->3…0->2->3…0->2->1->3等 0 1 2
0 1 2 3
0 0 4 9 12
1 9 0 3 11 // the adj matrix I'm referencing for 1 example
2 9 10 0 2
3 1 99 6 0
我需要帮助理解这个实现,不知道从哪里开始,除了弗洛依德的算法。
< P>这里是C++的代码,用于你的问题:#定义INF 10000005
使用名称空间std;
int main()
{
整数i,j,k,n,m,ver,edg,len,from,to;
int mat[10][10][10],next[10][10][10];
cin>>ver;
对于(i=0;i