BZOJ 1706权限题. 倍增$floyd$. 首先这道题有用的点最多只有$200$个,先离散化. 设$f_{p, i, j}$表示经过$2^p$条边从$i$到$j$的最短路,那么有转移$f_{p, i, j} = min(f_{p - 1, i, k} + f_{p - 1, k, j})$. 然后做一个类似于快速幂的东西把$n$二进制拆分然后把当前的$f$代进去转移. 可以设一个$g_{i, j}$表示当前从$i$到$j$的最短路,为了保证转移顺序的正确,可以把$g$抄出来到$h$中,然后…