HDU 2157
http://acm.hdu.edu.cn/showproblem.php?pid=2157
求A到B经过K个点的方案数
http://www.matrix67.com/blog/archives/276 这里面的经典问题8
存图的邻接矩阵自乘k次,得到的新矩阵A行B列就是答案
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std ; #define Matr 105 //矩阵大小,注意能小就小 struct mat//矩阵结构体,a表示内容,r行c列 矩阵从1开始
{
int a[Matr][Matr];
int r,c;
mat()
{
r=c=;
memset(a,,sizeof(a));
}
};
void print(mat m)
{
int i,j;
//printf("%d\n",m.size);
for(i=;i<m.r;i++)
{
for(j=;j<m.c;j++)printf("%d ",m.a[i][j]);
printf("\n");
}
} mat mul(mat m1,mat m2,int mod)
{
mat ans=mat();ans.r=m1.r;ans.c=m2.c;
for(int i=;i<=m1.r;i++)
for(int j=;j<=m2.r;j++)
if(m1.a[i][j])
for(int k=;k<=m2.c;k++)
ans.a[i][k]=(ans.a[i][k]+m1.a[i][j]*m2.a[j][k])%mod;
return ans;
}
mat quickmul(mat m,int n,int mod)
{
mat ans=mat();
int i;
for(i=;i<=m.r;i++)ans.a[i][i]=;
ans.r=m.r;ans.c=m.c;
while(n)
{
if(n&)ans=mul(m,ans,mod);
m=mul(m,m,mod);
n>>=;
}
return ans;
}
/*
ans^=n ->
mat ans=mat();
ans.r=R;ans.c=C;
初始化ans矩阵
ans=quickmul(ans,n,mod);
*/ int main()
{
int n,m ;
while(~scanf("%d%d",&n,&m))
{
if(!n && !m)break ;
mat M=mat() ;
M.r=n ;M.c=n ;
while(m--)
{
int a,b ;
scanf("%d%d",&a,&b) ;
M.a[a+][b+]= ;
}
int T ;
scanf("%d",&T) ;
while(T--)
{
int a,b,k ;
scanf("%d%d%d",&a,&b,&k) ;
mat res=quickmul(M,k,) ;
printf("%d\n",res.a[a+][b+]) ;
}
}
return ;
}
HDU 2157的更多相关文章
- HDU 2157 How many ways?? (邻接矩阵快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=2157 题意 : 给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值 从这道题 ...
- HDU 2157 How many ways??(简单线性DP | | 矩阵快速幂)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2157 这道题目很多人的题解都是矩阵快速幂写的,矩阵快速幂倒是麻烦了许多了.先给DP的方法 dp[i][ ...
- 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??:矩阵快速幂【i到j共经过k个节点的方法数】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2157 题解: 给你一个有向图,n个节点m条边,问你从i到j共经过k个节点的方法数(不算i点). 题解: ...
- HDU 2157(矩阵快速幂)题解
How many ways?? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 2157 矩阵幂orDP
How many ways?? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- HDU 2157 How many ways?? 临接矩阵+快速幂
Problem Description 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, ...
- hdu 2157 How many ways?? ——矩阵十题第八题
Problem Description 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, ...
- Hdu 2157 How many ways??(DP||矩阵乘法)
How many ways?? Time Limit:1000 MS Memory Limit: 32768 K Problem Description 春天到了, HDU校园里开满了花, 姹紫嫣红, ...
随机推荐
- PHP生成word的三种方式
摘要: 最近工作遇到关于生成word的问题 现在总结一下生成word的三种方法. btw:好像在博客园发表博客只要是标题带PHP的貌似点击量都不是很高(哥哥我标题还是带上PHP了),不知道为什么,估计 ...
- MVC3+EF4.1学习系列(五)----- EF查找导航属性的几种方式
文章索引和简介 通过上一篇的学习 我们把demo的各种关系终于搭建里起来 以及处理好了如何映射到数据库等问题 但是 只是搭建好了关系 问题还远没有解决 这篇就来写如何查找导航属性 和查找导航属性的几种 ...
- C#识别验证码技术-Tesseract
相信大家在开发一些程序会有识别图片上文字(即所谓的OCR)的需求,比如识别车牌.识别图片格式的商品价格.识别图片格式的邮箱地址等等,当然需求最多的还是识别验证码.如果要完成这些OCR的工作,需要你掌握 ...
- springmvc 配置直接访问页面
<mvc:view-controller path="/" view-name="/home"/> 在mvc中配置,访问路径就可以了
- 可滑动的ToggleButton(开关)
2013-12-28 17:25:01 网上看到一篇关于可滑动的ToogleButton的文章,有代码,觉得挺好,但是不符合我的要求,因此在他的代码基础上改了一些.(作者看到了勿喷啊,实在找不到原文了 ...
- [转载]Android 编译环境 build/envsetup.sh分析
2013-12-23 11:28:40 转载自: http://blog.csdn.net/evilcode/article/details/7005757 请到转载地址阅读原文, 转载以备查询.
- Android打开新的Activity并同时关闭当前Activity
Intent it = new Intent(); it.setClass(EditActivity.this, MainActivity.class); it.setFlags(Intent.FLA ...
- jpcap
1.System.out.println( System.getProperty("java.library.path")); 2.将jpcap.dll放到上边打印的路径中
- 从协议VersionedProtocol开始2——ClientDatanodeProtocol和InterDatanodeProtocol
1.首先,我看的是hadoop1.2.1 这个里边,有点奇怪ClientDatanodeProtocol的versionID是4,但是InterDatanodeProtocol的versionID是3 ...
- VC单文档对话框添加托盘图标
一 单文档添加托盘 1. 在CMainFrame中定义NOTIFYICONDATA结构m_notify 2.在OnCreate中添加托盘初始化代码 int CMainFrame::OnCreate(L ...