zoukankan      html  css  js  c++  java
  • hdu 2157 How many ways?? ( 经典矩阵 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2157

    题解链接:http://blog.csdn.net/rowanhaoa/article/details/21134509

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<iostream>
     4 #include<stdlib.h>
     5 
     6 using namespace std;
     7 
     8 const int mod=1e3;
     9 
    10 typedef struct matrix
    11 {
    12     int  tr[25][25];
    13     matrix (){ memset(tr,0,sizeof(tr)); }
    14 }S;
    15 int n,m,map[25][25];
    16 
    17 S mul( S A, S B)
    18 {
    19     S C;
    20     for(int i=1;i<=n;i++)
    21         for(int j=1;j<=n;j++)
    22             for(int k=1;k<=n;k++)
    23             C.tr[i][j]=(C.tr[i][j]+A.tr[i][k]*B.tr[k][j])%mod;
    24     return C;
    25 }
    26 
    27 S mulpow( S A, int k )
    28 {
    29     S B;
    30     if( k == 1 || k== 0 ) return A;
    31     B = mulpow( A, k/2 );
    32     if( k%2 == 0 )
    33         return mul( B, B );
    34 
    35     return mul( A, mul( B, B ));
    36 }
    37 //
    38 //S mulpow( S A, int k )
    39 //{
    40 //    S B;
    41 //    for(int i=1;i<=n;i++)
    42 //        B.tr[i][i]=1;
    43 //    while( k )
    44 //    {
    45 //        if( k&1 ) B = mul( B, A );
    46 //        A = mul( A, A );
    47 //        k >>=1;
    48 //    }
    49 //    return B;
    50 //}
    51 
    52 int main( )
    53 {
    54     int a,b,c;
    55     while(scanf("%d%d",&n,&m),n||m)
    56     {
    57     S t,t1;
    58         for(int i=1;i<=m;i++)
    59         {
    60             scanf("%d%d",&a,&b);
    61             t.tr[a+1][b+1]=1;
    62         }
    63         scanf("%d",&m);
    64         for(int i=1;i<=m;i++)
    65         {
    66             scanf("%d%d%d",&a,&b,&c);
    67             if( a==b && c==0 )
    68             {
    69                 printf("1
    ");
    70                 continue;
    71             }
    72             if( a!=b && c==0 )
    73             {
    74                 printf("0
    ");
    75                 continue;
    76             }
    77             t1 = mulpow( t, c );
    78             printf("%d
    ",(t1.tr[a+1][b+1])%mod);
    79         }
    80     }
    81     return 0;
    82 }
    View Code
  • 相关阅读:
    日期格式
    v-model修饰符
    从0到1构建全栈知识体系
    Element组件,v-for循环,表单验证方法
    上传文件转换为base64图片
    gulp4进阶
    gulp4快速入门
    TS-接口
    webpack4.0高级
    webpack4.0基础
  • 原文地址:https://www.cnblogs.com/lysr--tlp/p/maxtrix.html
Copyright © 2011-2022 走看看