求最短路,要求输出字典序最小的路径。
spfa:拿一个pre[]记录前驱,不同的是在松弛的时候,要考虑和当前点的dis值相等的情况,解决的办法是dfs找出两条路径中字典序较小的,pre[]去更新。把路径当做字符串处理。
我只用之前的pre去更新当前点,并没考虑到起点到当前点的整个路径,其实这样并不能保证是字典序最小。wa了N次,于是乎搜了下题解,发现用spfa解的很少,看到了某大牛的解法如上,感觉很赞的想法。
#include
#include
#include
#include
floyd:pre[i][j]记录i到j路径上距离i最近的点,输出路径时按pre正向输出。感觉floyd很强大啊,还可以这样记录路径。
#include
#include
#include
#include