加载中...

矩阵快速幂与邻接矩阵trick

P2233

对于一个稠密图(\(n \leq 500\)),可以直接构造它的邻接矩阵 \(G\)。而利用该邻接矩阵可以直接求出任意两点 \(u, v\),从 \(u\)\(v\) 经过恰好 \(k\) 条边的方案数:求出 \(G^{k}\) 即可,\(G[u][v]\) 即为所求。

证明:利用了 \(Floyd\) 原理:从 \(u\)\(v\) 经过 \(k\) 条边,可以通过 \(u\)\(w\) 经过 \(k-1\) 条边,再通过 \(w\)\(v\) 经过 \(1\) 条边来递推求得,枚举所有可能的中转点 \(w\) 即可。表达式为:

\[G_{k}[u][v] = \sum_{w=1}^{n} G_{k-1}[u][w] * G_{1}[w][k] \]

可以发现这恰好可通过 \(G^{k-1}*G\) 来得到,证毕。

对于本题,只需要按照题意构造出相应的邻接矩阵,然后矩阵快速幂即可。具体细节见代码。

code

posted @ 2025-07-18 10:41  jxs123  阅读(10)  评论(0)    收藏  举报