hdu 2157 How many ways?? ——矩阵十题第八题
接下来的T行, 每行有三个整数 A, B, k, 表示问你从A 点到 B点恰好经过k个点的方案数 (k < 20), 可以走重复边。如果不存在这样的走法, 则输出0
当n, m都为0的时候输入结束
0
3
0
1
0
2
1
2
2
0
0
1
3
#include<cstdio>
#include<cstring>
#include<algorithm>
const int mod=;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int q,k,n,m;
typedef int mat[][];
mat ans[],tmp;
void floyd(mat b,mat c){
memset(tmp,,sizeof(mat));
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++) tmp[i][j]=(tmp[i][j]+b[i][k]*c[k][j])%mod;
memcpy(b,tmp,sizeof(mat));
}
int main(){
while(scanf("%d %d",&n,&m),n||m){
memset(ans,,sizeof(ans));
int x,y;
for(int i=;i<=m;i++){
x=read()+,y=read()+;
for(int j=;j<=;j++) ans[j][x][y]=;
}
for(int i=;i<=;i++) floyd(ans[i],ans[i-]);
q=read();
for(int i=;i<=q;i++){
x=read()+; y=read()+; k=read();
if(k==&&x==y) printf("1\n");
else printf("%d\n",ans[k][x][y]);
}
}
return ;
}
hdu 2157 How many ways?? ——矩阵十题第八题的更多相关文章
- HDU 2157 How many ways?? 【矩阵经典8】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=2157 How many ways?? Time Limit: 2000/1000 MS (Java/Ot ...
- HDU 2157 How many ways?? 临接矩阵+快速幂
Problem Description 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, ...
- HDU 2157 How many ways??(简单线性DP | | 矩阵快速幂)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2157 这道题目很多人的题解都是矩阵快速幂写的,矩阵快速幂倒是麻烦了许多了.先给DP的方法 dp[i][ ...
- HDU 2157 How many ways??:矩阵快速幂【i到j共经过k个节点的方法数】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2157 题解: 给你一个有向图,n个节点m条边,问你从i到j共经过k个节点的方法数(不算i点). 题解: ...
- Hdu 2157 How many ways??(DP||矩阵乘法)
How many ways?? Time Limit:1000 MS Memory Limit: 32768 K Problem Description 春天到了, HDU校园里开满了花, 姹紫嫣红, ...
- hdu 2157 How many ways?? (可达矩阵)
题意:给你一个有向图,从A 点到 B点恰好经过k个点的方案数 (k < 20), 可以走重复边 思路:利用离散数学中的可达矩阵,可达矩阵的K次幂便是从i到j走K步能到达的方案数 代码: #inc ...
- HDU 2157 How many ways?【矩阵快速幂】
题目 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线 ...
- HDU 2157 How many ways?? (邻接矩阵快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=2157 题意 : 给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值 从这道题 ...
- HDU 2157 How many ways?? 题解
题目 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线 ...
随机推荐
- Python中对变量是否为None的判断
三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这 ...
- java—连连看GUI
1.连连看棋盘图形化 package Link; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; impo ...
- LintCode-140.快速幂
快速幂 计算an % b,其中a,b和n都是32位的整数. 样例 例如 231 % 3 = 2 例如 1001000 % 1000 = 0 挑战 O(logn) 标签 分治法 code class S ...
- setsockopt 设置socket 详细用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO ...
- [剑指Offer] 49.把字符串转换成整数
题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 [思路]考虑所有特殊情况 1.数字前面有空格,如s=" 12 ...
- bootstrap 有些控件需要调用锚点,会与angular 路由 冲突
最简单的方法 就是 在 #号前加/, 但有人说 在服务器上回失效,也不知道是什么原理.慎用 最靠谱的方法 就 是 使用bootstrap中的js控制控件, 比如轮播图的上一页 下一页,就可以在 ang ...
- C# 连接Oracle数据库以及一些简单的操作
拖了很久今天终于在博客园写了自己第一篇随笔: 话不多说,我们直接进入正题: 1.连接数据库 using (OracleConnection conn = new OracleConnection(&q ...
- 【刷题】BZOJ 2038 [2009国家集训队]小Z的袜子(hose)
Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只 ...
- 【CodeChef】Palindromeness(回文树)
[CodeChef]Palindromeness(回文树) 题面 Vjudge CodeChef 中文版题面 题解 构建回文树,现在的问题就是要求出当前回文串节点的长度的一半的那个回文串所代表的节点 ...
- POJ3254:Corn Fields——题解
http://poj.org/problem?id=3254 题面来自洛谷:https://www.luogu.org/problemnew/show/1879 农场主John新买了一块长方形的新牧场 ...