复制后的矩阵中,一条边是否存在只取决于两个端点编号减一后模 NNN 的余数,因此可以把所有顶点压缩成 NNN 个余数点。
查询 (s,t)(s,t)(s,t) 对应余数 (s−1) mod N,(t−1) mod N(s-1)\bmod N,(t-1)\bmod N(s−1)modN,(t−1)modN,它们之间的最短非空路径长度与原图相同。
在余数图上做 Floyd。对角线不能预设为零:原题保证 s≠ts\ne ts=t,但二者可能来自不同副本而映射到同一余数,此时需要真正的自环或有向环才能到达。
只把矩阵中的边置为 1,其他距离置为无穷,再正常转移即可;复杂度为 O(N3+Q)O(N^3+Q)O(N3+Q),空间为 O(N2)O(N^2)O(N2)。
注册一个 Hydro 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 Hydro 通用账户