对于迪杰克斯拉算法来说:
适合于有环无向(有向)图
对于无向有环图而言,就是对于每一点来说,找到最短路径之后加入flag==1队伍以后,之后更新的最小值就不会再到这一点了,但是还有可能其他值再到这一点(不更新不影响),再算路径数目的时候,只要这个点没加入到flag=1队伍时,他的数目都可以被更新,但是加进去之后,可能之后的值与他相等再次更新
对于路径数目的更新:
if(path_length[i][k]+weight[k][bian[k][u]]<path_length[i][bian[k][u]])
{
path_number[i][bian[k][u]]=path_number[i][k];
path_length[i][bian[k][u]]=path_length[i][k]+weight[k][bian[k][u]];
}
else if(path_length[i][k]+weight[k][bian[k][u]]==path_length[i][bian[k][u]])
{
path_number[i][bian[k][u]]+=path_number[i][k];
}
注意:这里路径数目不加1是因为可能之前有很多条路径的值相等(不知1条)