求最短路,要求輸出字典序最小的路徑。
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