zoukankan      html  css  js  c++  java
  • How many ways??

     

     

    思路分析:其实我们在很久之前曾经做过一道类似的题,那道题要求我们求的是经过k个点的最短路,我们在那道题用的是矩阵乘法和Floyd,这道题问的我们是经过k个点的路径一共有多少条,我们可以用类似的方法进行计算,我们设在两点a,b之间到中间点c的路径分别有x,y条,那么我们从a到b的路径就一共有x*y条,这根据我们刚刚学过的乘法分配计数原理可以得出。之后这道题和那道题就很相似了。

    代码:

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<memory>
     6 using namespace std;
     7 const int N=31;
     8 const int Mod=1000;
     9 int n;
    10 struct Node{
    11     int m[N][N];
    12     Node(){
    13         memset(m,0,sizeof(m));
    14     }
    15     Node friend operator*(Node a,Node b){
    16         Node d;
    17         for(int i=0;i<n;i++)
    18          for(int j=0;j<n;j++)
    19           for(int k=0;k<n;k++)
    20            d.m[i][j]=(d.m[i][j]+a.m[i][k]*b.m[k][j])%Mod;
    21         return d;
    22     }
    23     Node friend operator^(Node a,int k){
    24         Node d;
    25         for(int i=0;i<n;i++) d.m[i][i]=1;
    26         while(k){
    27             if(k&1) d=d*a;
    28             a=a*a;
    29             k>>=1;
    30         }
    31         return d;
    32     }
    33 };
    34 int main()
    35 {
    36     int m,k,i,x,y,q;
    37     while(~scanf("%d%d",&n,&m)){
    38         if(m==0&&n==0) return 0;
    39         Node Map;
    40         for(i=0;i<m;i++){
    41             scanf("%d%d",&x,&y);
    42             Map.m[x][y]=1;
    43         }
    44         scanf("%d",&q);
    45         for(i=0;i<q;i++){
    46              scanf("%d%d%d",&x,&y,&k);
    47              Node ans;
    48              ans=Map^k;
    49              printf("%d
    ",ans.m[x][y]);
    50         }
    51     }
    52     return 0;
    53 }
    View Code
  • 相关阅读:
    JavaScript那些事儿-不被知晓的预解释
    史上最难PHPer笔试题,40分就能月薪过万!附答案
    composer命令卡慢,使用国内源
    Github 上的 iOS 开源项目
    CSS3新属性:在网站中使用访客电脑里没有安装的字体
    Python批量重命名文件
    Python登录TP-Link路由器换ip脚本
    source 批量导入SQL文件
    代码
    excel字符拼接
  • 原文地址:https://www.cnblogs.com/li-jia-hao/p/12912109.html
Copyright © 2011-2022 走看看