以优先队列优化的迪杰斯特拉算法为例
最短路中我们是这么更新的
int to = e[i].to;
if(dis[to] > dis[x] + e[i].w){
dis[to] = dis[x] + e[i].w;
q.push({dis[to], to});
}
现在我们只需要改成即可
int to = e[i].to;
ll z = max(e[i].w, dis[x]);
if(dis[to] > z){
dis[to] = z;
q.push({dis[to], to};
}
这时候 d i s [ x ] dis[x] dis[x] 表示起点到 x x x 最短路上的最大边权值