题解:P11875 衡量距离
首先看到可达性问题,而且
但是这个题和普通的题不同,这个题的边权
- 把每个点拆成
10 个点,我们称他叫做点i 的附属点。第i 个点的第j 个附属点的编号为i+(j-1)\times n 这样编号的好处就是不会重复,避免边和边之间的交叉问题。 - 连边的时候,首先第
i 个点的第j 个附属点向第i 个点的第j+1 个附属点连边,可以保证i 的附属点是一条链的结构。 - 连那
M 条边的时候,设边权为w 则把u 的第w 个附属点向v 连边。
这样我们就构造好了初始矩阵,接下来考虑矩阵快速幂的时候如何更新矩阵。
由于我们每个点增加了 bitset 优化它,这样时间复杂度就变成了
代码