hdu2157

来源:互联网 发布:内存数据库 比较 编辑:程序博客网 时间:2024/05/19 00:13
裸的矩阵。
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <cmath>using namespace std;#define mod 1000int n,m;struct matrix{    int a[21][21];};matrix operator * (matrix x,matrix y){    matrix c;    memset(c.a,0,sizeof(c.a));    for(int i=0;i<n;i++)    {        for(int j=0;j<n;j++)        {            for(int k=0;k<n;k++)            {                c.a[i][j]+=x.a[i][k]*y.a[k][j];                c.a[i][j]=c.a[i][j]%mod;            }        }    }    return c;}matrix solve (matrix A,int k){    matrix res;    memset(res.a,0,sizeof(res.a));    for(int i=0;i<n;i++)    {        res.a[i][i]=1;    }    while(k)    {        if(k&1)            res=res*A;        k=k>>1;        A=A*A;    }    return res;}int main(){    int x,y,z,q;    while(scanf("%d%d",&n,&m)&&(n+m))    {        matrix org;        memset(org.a,0,sizeof(org.a));        for(int i=1;i<=m;i++)        {            scanf("%d%d",&x,&y);            org.a[x][y]=1;        }        scanf("%d",&q);        while(q--)        {            scanf("%d%d%d",&x,&y,&z);            matrix res = solve(org,z);            printf("%d\n",res.a[x][y]);        }    }    return 0;}

0 0