【题解】[SCOI2009] 迷路 拆点 矩阵加速

题目链接

对于无权图,我们的处理是很平凡的。

因为边权为 \(1\sim 9\) ,考虑如下拆点:

用有序对 \((u,k),u\in [1,n],k\in [0,8]\) 表示一个点,\(\forall k\in [1,8]\) 连有向边 \((u,k)\to (u,k-1)\)

即我们把每个点拆成长度为 \(9\) 的链。

对于原图中的一条边 \((u,v,w)\) ,拆成 \((u,0) \to (v,w-1)\) ,这样原图中的任一一条长度为 \(w\) 的边都可以双射到新图中一条长度为 \(w\) 的链,并且任意一条新图从 \(x\)\(y\) 经过 \(w\) 条边的路径都可以双射到原图中一条长度为 \(w\) 的路径。

转化成无权图后,矩阵乘法计算即可。

代码记录

posted @ 2021-09-07 13:04  Themaxmaxmax  阅读(14)  评论(0编辑  收藏  举报