图论的最短路问题,这道题多了个每个点的权值(就是tax值,相当于过路费),还有要求输出最短路径,如果路长相等,以字典序为准。
我用的是Floyd(因为……dijkstra我还不会路径回溯……)。另设一个和map[][]等大的数组path[][]用来保存路径,首先把path[i][j]初始化为j,也就是说path[i][j]用来保存 i --> j 的最短路径中 i 的最优后驱(即最近),在Floyd三重循环时,一直更新path。
到结束时,以 i 找到 j 就可以了(这里有点递归的意思,以后好好想想)。
上代码: