【hdu】【P2157】【How many ways??】【题解】【矩阵乘法】
来源:互联网 发布:1688怎么传淘宝 编辑:程序博客网 时间:2024/06/12 23:10
传送门:acm.hdu.edu.cn/showproblem.php?pid=2157
矩乘经典应用
Code:
#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int maxn=21;const int MOD=1000;int n,m;struct Matrix{int a[maxn][maxn];void clear(){memset(a,0,sizeof(a));}void init(int n){for(int i=0;i<n;i++)a[i][i]=1;}int at(int i,int j){return a[i][j];}void updata(int i,int j,int x){a[i][j]=x;}Matrix operator*(Matrix x)const{Matrix ans;ans.clear();for(int i=0;i<n;i++)for(int j=0;j<n;j++)for(int k=0;k<n;k++)ans.a[i][j]+=a[i][k]*x.a[k][j],ans.a[i][j]%=MOD;return ans;}Matrix operator%(int p){Matrix ans=*this;for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]%=p;return ans;}};Matrix pow(Matrix x,int k){Matrix ans;ans.clear();ans.init(n);for(;k;k>>=1){if(k&1)ans=(ans*x)%MOD;x=(x*x)%MOD;}return ans;}Matrix mp;int main(){while(scanf("%d%d",&n,&m)==2){mp.clear();if(!n&&!m)break;for(int i=1;i<=m;i++){int u,v;scanf("%d%d",&u,&v);mp.updata(u,v,1);}int T;scanf("%d",&T);while(T--){int u,v,k;scanf("%d%d%d",&u,&v,&k);Matrix ans=pow(mp,k);printf("%d\n",ans.at(u,v)%MOD);}}return 0;}
0 0
- 【hdu】【P2157】【How many ways??】【题解】【矩阵乘法】
- How many ways?? 矩阵乘法
- Hdu 2157 How many ways??(DP||矩阵乘法)
- [HDU2157]How many ways??(矩阵乘法)
- hdu how many ways
- HDU How many ways
- hdu2157 how many ways 矩阵
- HDU-2157 How many ways?? 矩阵快速幂
- hdu 2157 How many ways?? (矩阵快速幂)
- 矩阵经典题目八:hdu 2175 How many ways??
- 矩阵十题【九】 HDU 2157 How many ways??
- HDU 2157 How many ways??(经典矩阵快速幂)
- HDU 2157 How many ways??(矩阵快速幂)
- hdu 2157 How many ways?? 矩阵快速幂
- HDU 2157 How many ways??(矩阵快速幂)
- HDU 2157 How many ways??(矩阵的快速幂)
- HDU 2157 How many ways?? 矩阵快速幂
- HDU 2157 How many ways??(矩阵快速幂)
- PyQt的安装
- 非官方大哥大股东
- HDU 1301 Jungle Roads (最小生成树)kruskal
- FPGA机器学习之龙星计划机器学习第七堂
- 黑马程序员 java中的String类
- 【hdu】【P2157】【How many ways??】【题解】【矩阵乘法】
- 解读IEEE标准754:浮点数表示
- 法规和发个很反感
- POJ1979 Red and Black DFS搜索
- OC---特有语法1
- 使用spring AOP获得session的思路
- NSSet和NSMutableSet
- ARM平台上Linux异常处理代码简要分析
- Debug与Release版本的区别