常见技巧:
新建超级源点:例如求到达一个点集中的任意一个点的最短路,就把这个点集的点都从一个超级源点连出
分层图最短路:给最短路多带上一个属性(例如使用某个优惠条件/加倍条件k次,有时候可以提前使用或者存储起来以后使用某个条件)
同余最短路:给n个整数a1,a2,an,求他们不能线性组合出的[lim1,lim2]中的最小/最大的整数:取出最小值amin,然后求i in[0,amin),是否存在一个值x使得 x=k*amin + i ,假如存在,那么这个最小的x是多少,这样可以变回最短路的问题。
松弛操作:若使用ai松弛后没有越界,则使用ai对这些值进行松弛:dis[(u+ai)%amin]=min(dis[(u+ai)%amin],dis[u]+ai)