(1)为什么要采取其他算法?Dijkstra算法在这里是行不通的.因为经过某条负值边会使得以前找到的节点不是最短路径.比如:
(2)新算法的基本思路:
[1]我们采用计算无权边时候的算法,稍加改进.首先将起始节点放入队列。
[2]每次出队一个节点k,将它所有的相邻节点更新距离(Cij+Dk),如果k到初始点的距离加上相邻边的长比该相邻节以前到初始节点的距离小,就更新距离,并且将该相邻节点入队;
[3]无论该节点是否被访问,只要距离被更新,都需要重新入队
[4]直到所队列为空
#####Ps;相关数据结构都是在加权边的博文里面给出了
void Negativesearch(Table T,int start)
{
int v,w,weight;
int Isinqueue[Number] = {
0};
queue Q = Create(Numbe