zoukankan      html  css  js  c++  java
  • hdu 2157 How many ways?? 矩阵快速幂

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    const int M=1000;
    
    int N,m;
    struct Matrix
    {
        int mp[25][25];
        Matrix()
        {
            memset(mp,0,sizeof(mp));
        }
    };
    
    Matrix Mul(Matrix a,Matrix b)
    {
        int i,j,k;
        Matrix c;
        for(i=0; i<N; i++)
            for(j=0; j<N; j++)
            {
                c.mp[i][j]=0;
                for(k=0; k<N; k++)
                {
                    c.mp[i][j]=(c.mp[i][j]+a.mp[i][k]*b.mp[k][j])%M;
                }
            }
        return c;
    }
    
    Matrix Pow(Matrix a,int n)
    {
        Matrix c;
        for(int i=0;i<N;i++)
            c.mp[i][i]=1;
        while(n)
        {
            if(n&1) c=Mul(c,a);
            a=Mul(a,a);
            n/=2;
        }
        return c;
    }
    
    int main()
    {
        int i,j,u,v,k,_;
        Matrix t;
        while(~scanf("%d%d",&N,&m))
        {
            if(N==0&&m==0) break;
            for(i=0;i<N;i++)
                for(j=0;j<N;j++)
                        t.mp[i][j]=0;
    
            for(i=0;i<m;i++)
            {
                scanf("%d%d",&u,&v);
                t.mp[u][v]=1;
            }
    
            scanf("%d",&_);
            for(i=0;i<_;i++)
            {
                scanf("%d%d%d",&u,&v,&k);
                Matrix ans=t;
                ans=Pow(t,k);
                printf("%d
    ",ans.mp[u][v]%M);
            }
        }
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    全景拼接
    krpano之字幕添加
    UML之时序图
    krpano之语音介绍
    小工具之录音(文字转语音)
    动态生成按钮的点击事件绑定
    登录之简单验证码
    登录之md5加密
    redis与mysql数据同步
    Sql Server 主从数据库配置
  • 原文地址:https://www.cnblogs.com/xryz/p/4847856.html
Copyright © 2011-2022 走看看