刘老师我一直不太明白 Bellman-Ford算法最外层for循环的意思,里面for循环可以走完逻辑的,比如最简单的1->3(5),1->2(6),2->3(-2)这个图,按照您的代码
for( int i = 0 ; i < G.V() ; i ++ ){
(这个循环不就是遍历出三个点的全部边了嘛,然后下面逻辑判断的结果是2次松弛操作,最终得到最短路径1->2->3,另外得到最短路径后,原路径在下次循环的话还需要在继续遍历出来嘛)
typename Graph::adjIterator adj(G,i);
for( Edge<Weight>* e = adj.begin() ; !adj.end() ; e = adj.next() )
if( from[e->v()] &&
(!from[e->w()] || distTo[e->v()] + e->wt() < distTo[e->w()]) ){
distTo[e->w()] = distTo[e->v()] + e->wt();
from[e->w()] = e;
}
}