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校园里开满了花, 姹紫嫣红, ...
随机推荐
- winform开发中绑定combox到枚举
开发中需要根据下拉框的选择处理一些业务逻辑,使用ID值或Text值都不利于代码维护,所以可以写个扩展方法绑定到枚举上. public static class Extensions { /// < ...
- spring mvc读取url变量
@RequestMapping(value="/{id}/{name}", method=RequestMethod.GET) public ModelAndView getUrl ...
- java正则表达式之java小爬虫
这个java小爬虫, 功能很简单,只有一个,抓取网上的邮箱.用到了javaI/O,正则表达式. public static void main(String[] args) throws IOExce ...
- bzoj 2244: [SDOI2011]拦截导弹
#include<cstdio> #include<iostream> #include<algorithm> #define M 100009 using nam ...
- c实现的iOS http下载类。支持自己设定http 头(比如cookie等)
也许有人要问为什么要自己用c写? 原因是: 1 我是菜鸟 2 我最最初选择了AsyncSocket,弄了很久,基本上稳定了,但有时候出现了数据不完整,但我又没办法在这个时候识别到并重试:所以不完美,最 ...
- 虚拟机的apache服务器不能被主机访问的问题
我在centos虚拟机上安装了elasticsearch服务,虚拟机里测试正常,但主机却无法访问elasticsearch.要说的是,虚拟机采用桥接模式,与主机相互ping得通. 后来查了资料发现,这 ...
- c# MVC在WEB.Config中配置MIME
在IIS中,默认没有添加.json格式的MIME,所有无法读取服务器中的.json格式的文件,返回结果404 方式一:在IIS中手动添加MIME 1.点击MIME进入MIME列表 2.添加MIME 3 ...
- ng-repeat的group
http://blog.csdn.net/violet_day/article/details/17023219 一.obj包含 <!doctype html> <html ng- ...
- 戴文的Linux内核专题:06配置内核(2)
转自Linux中国 这一部分我们讲配置内核IRQ子系统.中断请求(IRQ)是硬件发给处理器的一个信号,它暂时停止一个正在运行的程序并允许一个特殊的程序占用CPU运行. 这个目录中的第一个问题属于内核特 ...
- SharePoint 2013 开发——APP安全模型
博客地址:http://blog.csdn.net/FoxDave 除非开启了SharePoint网站的匿名访问,否则对于入站的请求,必须要有一个身份验证的过程(Authentication),这个 ...