hdu2157:How many ways??

n<=20个点m<=100条边有向图不带权,t个询问问Ai到Bi的经过k<=20条边方案数多少。

f[i][j]--i到j的方案数,,初始化成初邻接矩阵,这样做一次就得到2条路最短路,做两次就是4条……这东西不就是矩乘吗?

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 #include<algorithm>
 5 //#include<iostream>
 6 using namespace std;
 7
 8 int n,m,t;
 9 #define maxn 23
10 typedef int mat[maxn][maxn];
11 mat a,ans;
12 const int mod=1000;
13 void copy(mat a,mat b)
14 {
15     for (int i=1;i<=n;i++)
16         for (int j=1;j<=n;j++)
17             a[i][j]=b[i][j];
18 }
19 void mul(mat a,mat b,mat ans)
20 {
21     mat t;memset(t,0,sizeof(t));
22     for (int i=1;i<=n;i++)
23         for (int j=1;j<=n;j++)
24             for (int k=1;k<=n;k++)
25                 t[i][j]=(t[i][j]+a[i][k]*b[k][j]%mod)%mod;
26     copy(ans,t);
27 }
28 void init(mat t)
29 {
30     memset(t,0,sizeof(mat));
31     for (int i=1;i<=n;i++) t[i][i]=1;
32 }
33 void pow(mat a,int b,mat ans)
34 {
35     mat t,tmp;init(t);copy(tmp,a);
36     while (b)
37     {
38         if (b&1) mul(t,tmp,t);
39         mul(tmp,tmp,tmp);
40         b>>=1;
41     }
42     copy(ans,t);
43 }
44 int main()
45 {
46     while (scanf("%d%d",&n,&m),n||m)
47     {
48         int x,y,v;memset(a,0,sizeof(a));
49         for (int i=1;i<=m;i++)
50         {
51             scanf("%d%d",&x,&y);
52             x++;y++;
53             a[x][y]=1;
54         }
55         scanf("%d",&t);
56         for (int i=1;i<=t;i++)
57         {
58             scanf("%d%d%d",&x,&y,&v);
59             x++;y++;
60             pow(a,v,ans);
61             printf("%d\n",ans[x][y]);
62         }
63     }
64     return 0;
65 }

时间: 2024-10-10 16:04:24

hdu2157:How many ways??的相关文章

[LeetCode]题解(python):091 Decode Ways

题目来源 https://leetcode.com/problems/decode-ways/ A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 Given an encoded message containing digits, determine the total number

8个经过证实的方法:提高机器学习模型的准确率

来自 http://datartisan.com/article/detail/74.html 导语: 提升一个模型的表现有时很困难.如果你们曾经纠结于相似的问题,那我相信你们中很多人会同意我的看法.你会尝试所有曾学习过的策略和算法,但模型正确率并没有改善.你会觉得无助和困顿,这是90%的数据科学家开始放弃的时候. 不过,这才是考验真本领的时候!这也是普通的数据科学家跟大师级数据科学家的差距所在.你是否曾经梦想过成为大师级的数据科学家呢? 如果是的话,你需要这 8 个经过证实的方法来重构你的模型

转:每个架构师都应该研究下康威定律

今天的分享主要来自我之前的工作经验以及平时的学习总结和思考.我之前的背景主要是做框架.系统和平台架构,之前工作过的公司 eBay.携程.唯品会都是平台型互联网公司,所以今天主要带着平台架构视角和大家分享心得体会.架构的视角每个人都不一样,可以说一万种眼光,有业务架构.安全架构.平台架构.数据架构,各不相同,这里仅是我的一家之言,欢迎大家加入『聊聊架构』社群参与讨论.今天聊的话题主要包括以下几点: 我对架构定义的理解 架构的迭代和演化性 构建闭环反馈架构(Architecting for clos

编写难于测试的代码的5种方式

本文由码农网 – 孙腾浩原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 有一次,我在一个讲座上听到主持人问听众如何故意编写难于测试的代码.在场的小伙伴都惊呆了,因为没有任何人会故意写这种糟糕的代码.我记得他们甚至给不出一个好的答案. 当然,这个问题的目的不在于教大家如何写使同事欲哭无泪的烂代码.而是为了了解什么样的代码难于测试,来避免这些严重的问题. 这里给出我对上面那个问题的答案(当然这只是我的个人观点,每个人讨厌的都不尽相同.) 1.用大量的静态字段 尤其是在不同类中共享静

python3中的range函数

奇怪的现象 在paython3中 print(range(10)) 得出的结果是 range(0,10) ,而不是[0,1,2,3,4,5,6,7,8,9] ,为什么呢? 官网原话: In many ways the object returned by range() behaves as if it is a list, but in fact it isn’t. It is an object which returns the successive items of the desire

[Linux] 设置系统时区

1. 检查当前时区 以 root 身份登录. # date Fri Sep 5 01:53:21 UTC 2014 其中 UTC 是指当前使用的时间系统为世界标准时间,也称世界协调时间.英文名称为 Coordinated Universal Time,法文名称为 Temps Universel Coordonné.作为英文缩写 CUT 和法文缩写 TUC 的妥协方案,简称 UTC.中国所处时区为 UTC+8. 2. 查看可用时区 查看目录 /usr/share/zoneinfo,可以看到所有时区

12 个有效的提高编程技能的方法

英文原文:12 Effective Ways To Improve Your Programming 1. 永远不要停止学习和阅读 阅读 书籍,而不只是网站 阅读 只为自我提升,而不是为了下一个项目 阅读 提升你的基础,而不只是最新技术 2. 跟比你聪明的人一起工作 跟比你更聪明的人或者是更有经验的人一起工作,可以让你快速提升 3. 变成一个全才 不要过于钻牛角尖,这可能会让你停滞不前和伤害你的就业前景. 4. 阅读并记录别人的代码 其实写代码比阅读并理解别人的代码要容易的多. 5. 在实际的项

C++的几种常用教程和用法

1.<C++ Primer中文版>(第4版) [原书名] C++ Primer (4th Edition) [原出版社] Addison Wesley/Pearson [作者] (美)Stanley B.Lippman,Josée LaJoie,Barbara E.Moo [译者] 李师贤 [丛书名] 图灵计算机科学丛书 [出版社]人民邮电出版社 本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoi

OpenStreetMap地图数据介绍(转)

原文链接:每日一读 Packtpub.OpenStreetMap(1) 相信绝大多数人都知道Wiki,但要提起地图,大家第一反应肯定是Google地图.在没看这本书之前,还真不知原来还有OpenStreetMap,一个类似于wiki的可供自由编辑的世界地图,它是由用户创造的,允许你查看,编辑或者使用世界各地的地理数据. Making a Free, Editable Map of the World 简要介绍了OpenStreetMap的历史,从最初的Java到现在的Ruby on Rails.