从s到t,每次经过一个村庄要缴纳1个单位的货物,经过一个城镇时,每20个货物就要缴纳一个,求字典序最小的最少花费路径。
用最短路的思想来解。从终点跑最短路,对于边的边权值,如果u是村庄,边权自然是1,当u是城镇时,边权是min{key | key - (key+19)/20=d[u]}。
求出最短路后,从起始点dfs,每次沿着满足最距离且字典序最小的边走就OK了~
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include