vijosP1603迷宫

链接:https://vijos.org/p/1603

【思路】

参考Matrix67的文章:

【代码】

 #include<cstdio>
#include<cstring>
#include<iostream>
#define FOR(a,b,c) for(int a=(b);a<(c);a++)
using namespace std; const int maxn = +;
typedef long long LL; int n,m,MOD; struct Matrix{
int r,c;
LL N[maxn][maxn];
void init(int r,int c) {
this->r=r, this->c=c;
memset(N,,sizeof(N));
}
Matrix operator*(Matrix& B)const{
Matrix A=*this,C;
C.init(A.r,B.c);
for(int i=;i<C.r;i++)
for(int j=;j<C.c;j++)
for(int k=;k<A.c;k++)
C.N[i][j] = (C.N[i][j]+A.N[i][k]*B.N[k][j])%MOD;
return C;
}
Matrix pow(int p) {
Matrix tmp=*this;
Matrix ans;
ans.init(r,r);
for(int i=;i<r;i++) ans.N[i][i]=;
while(p) {
if(p&) ans=ans*tmp;
tmp=tmp*tmp;
p>>=;
}
return ans;
}
};
int main() {
int s,t;
scanf("%d",&n);
Matrix ans;
ans.init(n,n);
FOR(i,,n)FOR(j,,n) scanf("%d",&ans.N[i][j]);
scanf("%d%d%d%d",&m,&s,&t,&MOD);
ans=ans.pow(m);
printf("%d\n",ans.N[s-][t-]);
return ;
}

最新文章

  1. 【JAVA并发编程实战】12、使用condition实现多线程下的有界缓存先进先出队列
  2. position:absolute绝对定位解读
  3. 初探C++Primer(15.面向对象程序设计)
  4. 三部曲一(搜索、数学)-1016-Code
  5. order by 指定顺序 mysql
  6. 一个相当好的状态机(DFA, 确定有限状态机)的编码实现,相当简洁漂亮
  7. 使用ASP.NET 构建 Web 应用程序快速入门-8小时的免费培训视频
  8. Seeding--zoj2100
  9. Android中计算时间差的实现方法
  10. CIF、DCIF、D1分辨率是多少?
  11. SVN的安装以及和eclipse的结合使用
  12. Spring 对Controller异常的统一处理
  13. Java常用类库 读书笔记 一
  14. List&lt;Map&lt;String, Object&gt;&gt;集合中获取某个key并转换为List&lt;Integer&gt;集合
  15. Microsoft SQL - 数据类型
  16. 模拟开户接口,使用python脚本实现批量用户开通
  17. 添加dubbo.xsd的方法
  18. PHP 中如何创建和修改数组?
  19. C#基础篇五值类型和引用类型
  20. 电脑的fn锁,f1-f12与功能键 互换

热门文章

  1. Iterator&lt;Entry&lt;String,String&gt;&gt; iter=map.entrySet().iterator(); 是什么意思
  2. 使用js使表单自动提交
  3. 关于mssql数据库锁和事务隔离级别
  4. SQL语句之三简单增删改查
  5. 用于显示上个月和下个月_PHP
  6. xcode本地运行H5游戏可以吗?
  7. FMDB多线程读写问题,使用FMDataBaseQueue操作可以解决同时打开一个链接de读写问题
  8. java基础易错点总结(一)
  9. JavaScript中style.left与offsetLeft的区别
  10. javascript基础学习(四)