bzoj 1706
询问求从 u 到 v 恰好经过 K 条边的最短路。 (n<=200, 边权为
正 ,K<=10^18)
假如 K<=30 可以怎么
做?
dis[i][j][k], 表示经过 i 条边,从 j 到 k 的最短路。枚举边数,之后 floyd ,
只是注意是用 dis[i-1] 和 dis[1] 来更新 dis[i]
但实际上我们可以用 dis[a] 和 dis[b] 得到 dis[a+b]
不用预处理出所有答案,只要处理出 dis[2 的各个幂 ] 就可以把答案拼出
来。
预处理复杂度和单次查询单次查询复杂度都是 O(logK*n^3)
第 4 页 / 共 31 页