hdu 2157
来源:互联网 发布:tensorflow教程pdf 编辑:程序博客网 时间:2024/06/16 13:31
/*此题目乍一看是个图论求路径数目的问题,但不好求解,可以考虑a[i][j]=a[i][k]*a[k][j]i到j经过一个点是否有一条路,取决于i到k是否有一条路*k到j是否有一条路,不断累乘,可以求出i到j经过m个点的方案数*/#include<cstdio>#include<iostream>#include<cstdlib>#include<algorithm>#include<cstring>#define LL long long#define maxn 35#define MOD 1000 using namespace std;int n,m,q;typedef struct{int z[maxn][maxn];}matrix;matrix mulmatrix(matrix a,matrix b){matrix s;memset(s.z,0,sizeof(s.z));for(int i=0;i<n;i++){for(int j=0;j<n;j++){for(int k=0;k<n;k++){s.z[i][j]+=a.z[i][k]*b.z[k][j];s.z[i][j]%=MOD;}}}return s;}matrix powmatrix(matrix a,int k){matrix s;memset(s.z,0,sizeof(s.z));for(int i=0;i<n;i++)s.z[i][i]=1;while(k){if(k&1)s=mulmatrix(s,a);a=mulmatrix(a,a);k>>=1;}return s;}int main(){while(cin>>n>>m){if(n==0&&m==0)break;matrix t,res;memset(t.z,0,sizeof(t.z));for(int i=0;i<m;i++){int a,b;cin>>a>>b;t.z[a][b]=1;}cin>>q;for(int i=0;i<q;i++){int x,y,u;cin>>x>>y>>u;res=powmatrix(t,u);cout << res.z[x][y] << endl;}}return 0;}
阅读全文
0 0
- hdu 2157
- hdu 2157
- HDU-2157
- HDOJ/HDU 2157
- HDU 2157解题报告
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- 第六周LeetCode算法题两道
- jQuery 取值、赋值的基本方法整理
- JavaScript之使用JavaScript模仿oop编程
- 数据结构-->结构体
- sed命令详解
- hdu 2157
- js关闭一个窗口并打开另一个窗口
- 树
- the new beginning
- java并发基础(五)--- 线程池的配置与定制ThreadPoolExecutor
- PTA 7-2 列车调度(25 分) 思路+超时代码+正确代码
- 对象的作用域
- Android_AutoRoom 3
- 请求修改矩阵乘法,能用