FZU 1627Revival's road
来源:互联网 发布:mac电脑有什么游戏好玩 编辑:程序博客网 时间:2024/06/05 07:40
http://acm.fzu.edu.cn/problem.php?pid=1627
给一张图,每走一步为1s,求正好在k秒到达终点的走的方法数。
以前做过类似的题目,利用矩阵相乘的知识可得到,将地图转换为01矩阵,该矩阵的x次方即为在x秒时(或者是走过x个点)从i到j的方法数。
所以这题用矩阵快速幂即可。
#include<iostream>#include<cstring>using namespace std;struct node{int ma[111][111];};int MOD=10000;int n,m,k;node b;node operator * (node x,node y){node ans;int i,j,k;for(i=1;i<=n;i++){for(j=1;j<=n;j++)ans.ma[i][j]=0;}for(i=1;i<=n;i++){for(j=1;j<=n;j++){for(k=1;k<=n;k++){ans.ma[i][j]=(ans.ma[i][j]+x.ma[i][k]*y.ma[k][j])%MOD;}}}return ans;}node operator ^ (node a, int dis){node c;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==j)c.ma[i][j]=1;else c.ma[i][j]=0;}}while(dis){if(dis%2==1)c=c*a;a=a*a;dis/=2;}return c;}int main(){ while(cin>>n>>m>>k) { node a; int i; int x,y;for(i=1;i<=n;i++){for(int j=1;j<=n;j++){a.ma[i][j]=0;}} for(i=1;i<=m;i++) { scanf("%d%d",&x,&y); a.ma[x][y]=1;}a=a^k;cout<<a.ma[1][n]%MOD<<endl;}return 0;}
阅读全文
0 0
- FZU 1627Revival's road
- FZU 1627 Revival's road
- FZU 1627Revival's road
- FZU 1627 Revival's road【DP(矩阵快速幂)】
- Revival's odd
- Revival
- RDMA's Long Hard Road
- FZU 1150 Peter's smokes
- FZU -- 2157 ProgramCaicai's Trees
- fzu - 2164 Jason's problem
- FZU 1627
- poj3204 Ikki's Story I - Road Reconstruction
- POJ3204 Ikki's Story I - Road Reconstruction
- Qin Shi Huang's National Road System
- Qin Shi Huang's National Road System
- hdu4081Qin Shi Huang's National Road System
- Qin Shi Huang's National Road System
- Qin Shi Huang's National Road System
- 无旋treap的初步学习
- 51nod 1277 字符串中的最大值 (kmp之next数组的理解) O(n)可过
- 文章标题
- Opencv之<Vec3b>
- Celery 队列路由介绍
- FZU 1627Revival's road
- HDOJ 2561 第二小整数(水)
- 学习HTMLTestRunner笔记
- [leetcode] 413. Arithmetic Slices
- 习题8
- 【斯特林公式】N!的k进制位数
- 神经网络 tensorflow教程 2.2 下载MNIST 数据集(保存所有图片)
- VMware虚拟机nat模式连不上网
- python入门第三天——继承