Floyd的简单应用
Description
给出一张$n$点$m$边的无向图,有一个机器人,起点在$1$号点上,机器人会进行$t$次操作。
一次操作可能包括:移动到与现在点直接相连的点上,停留在现在的点上,自爆(自爆之后不能进行操作)
求机器人行为的方案数,对$2017$取模。
$t \leq 10^9, n,m \leq 100$.
Samples
Input #1
1 | 3 2 |
Output #1
1 | 8 |
Solution
考虑建出这张图的邻接矩阵$\rm G$.
从$\rm Floyd$算法的角度来分析, 容易发现${\rm G}^k_{i,j}$表示的是从$\rm i$点到$\rm j$点走$k$步的方案数.
对于停在原地这个操作, 我们对每个城市连一条自环即可.
对于自爆, 我们建出一个虚点表示这个状态, 然后从每个点向它连一条有向边.
然后矩阵快速幂算出${\rm G}^k$, 统计$\sum_{i=0}^n {\rm G}_{1, i}$即可.
Code
1 | /* Headers */ |
感觉这篇post有点水了