差分约束:解决知足条件的不等式
为了保证图连通,引入附加点vs,使图中每一个点vi到vs均可达,设弧<vs, vi>的权w(vs, vi)=0.
对于每一个差分约束xj-xi<=bk,则弧<vj, vi>权值为bk;
初始化dis[vs]=0, dis[vi]=INF;
而后求以vs为源点的最短路径。因为存在负权值,所以能够用Spfa算法求
spfa算法:
1.将源点加入队列, dis[s]=0, 其余点为无穷大
2.将队头取出标记为front,遍历与他相邻的点x;
3.若是dis[x]>dis[front]+edge[x].value即源点到x的距离大于源点到front的距离+front到x点的距离,更新dis[x].
而且若是x不在队列中将它入队.重复步骤2
4.若是某一点出队的次数大于n-1,证实存在负环,没法计算单源最短路算法