原题链接
题目描述
加里敦星球的人们特别喜欢喝可乐。因而,他们的敌对星球研发出了一个可乐机器人,并且放在了加里敦星球的 11 号城市上。这个可乐机器人有三种行为: 停在原地,去下一个相邻的城市,自爆。它每一秒都会随机触发一种行为。现在给加里敦星球城市图,在第 00 秒时可乐机器人在 11 号城市,问经过了 tt 秒,可乐机器人的行为方案数是多少?
输入格式
第一行输入两个正整数 NN,MM。NN 表示城市个数,MM 表示道路个数。
接下来 MM 行每行两个整数 uu,vv,表示 uu,vv 之间有一条道路。保证两座城市之间只有一条路相连,且没有任何一条道路连接两个相同的城市。
最后一行是一个整数 tt,表示经过的时间。
输出格式
输出可乐机器人的行为方案数,答案可能很大,请输出对 20172017 取模后的结果。
输入输出样例
输入
3 2
1 2
2 3
2
输出
8
思路与分析
这是一道使用了邻接矩阵快速幂模板的题目,题目中最后的行为方案数就是从矩阵顶点1出发到所有顶点(0-n)的路径数量,具体的思路写在代码注释中
这里直接放上洛谷lgswdn大佬的代码(因为自己的实在太丑,同时也作为模板进行参考与使用)(略有改动)
模板代码
#include<bits/stdc++.h>
using namespace std;
const int N = 31;//矩阵的最大大小
const int MOD = 2017;//模数
int n,m,t,ans;//矩阵大小 边的数量
struct mat
{
//朴素矩阵
int a[N][N];
mat(){
memset(a,0