题面要求的是一个差值,即走过一条路径能找到的路径上最大值-最小值. 那么相当于跑一遍最长路和一遍最短路,当然不是概念上的最长路最短路,这里把dis[v]的松弛改成用路径上传递来的最大/最小值维护,而不是上一个点传来的dis[u]+w(u,v). 同时这样的松弛中还要和这个点本身的权值作比较. 跑最长/最短路满足能走到终点这一题意,同时保证之前的最大值/最小值能传递到走到的这个点. 跑完两次松弛最长路/最短路以后,枚举每个点存下的最大值-最小值,更新最终ans. 代码如下(当时码风很丑甚至开了O2…