CF870F Paths

题意:给定一张 个点的图,点编号为

对于点 。若 ,则 有一条长度为 的无向边。

表示从 的最短路长度,如果 无法到 ,则

求节点两两之间距离之和。

,时限


对于两个数 ,考虑如何快速求出

在判定两个数能不能连边时,只需要考虑质因子集合,不需要考虑质因子次数。

  • 中有一个为 ,则 ,直接将 忽略。

  • 若两个数不互质,则直接连接。( Case #A

  • 对于两个互质的数 ,取出各自的最小质因子

    ,则 。( Case #B

    ,则 。( Case #C

    ,则 。( Case #D

下面对每种情况分别统计贡献。

  • Case #A

线性筛即可。

  • Case #B

算出互质数对的总数,再减去其他情况。

  • Case #C

的最小质因子。

这里由于 ,故一个数不可能同时含有 (或更大的素因子)。

因此,有

预处理

  • Case #D


总复杂度

本题的妙处在于, 四种情况的统计并不是一样难的,需要适当运用正难则反思想。

关键在于 的一步转化。