题目:

  

题意:

  找过k条边的路径个数。

分析:

  首先注意一下题意,同一个点过两次算两次,做过类似的,过k条边的最短路,只要搞一个矩阵,然后快速幂就好了,这个也一样,维护信息变一下,然后就好了。

  如果k很大:

    并不影响此种做法。

  如果n很大:

    改成dp。dp[x][k]表示过k个边到点x的路径数,然后就可以了。

代码:

  

#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
const int maxn=+;
const int maxm=+;
int ed[maxm][maxm];
int n;
struct JZ{
int a[maxm][maxm];
JZ(){
memset(a,,sizeof(a));
}
JZ(int s){
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
a[i][j]=ed[i][j];
}
JZ(int s,int k){
memset(a,,sizeof(a));
for(int i=;i<=n;i++)
a[i][i]=;
}
friend JZ operator + (JZ a,JZ b){
JZ c;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
for(int k=;k<=n;k++){
c.a[i][j]+=b.a[i][k]*a.a[k][j];
c.a[i][j]%=;
}
return c;
}
};
int ha[maxn];
int main(){
int N,m;
while(~scanf("%d%d",&n,&m)&&(m||n)){
memset(ed,,sizeof(ed));
int js1,js2;
for(int i=;i<=m;i++){
scanf("%d%d",&js1,&js2);
ed[js1+][js2+]=;
}
int q;
scanf("%d",&q);
for(int i=;i<=q;i++){
scanf("%d%d%d",&js1,&js2,&N);
bool f=;
JZ D(,);
for(JZ now();N;now=now+now){
if(N&)
D=D+now;
N>>=;
}
printf("%d\n",D.a[js1+][js2+]);
}
}
return ;
}

How many ways??,题解的更多相关文章

  1. HDU 2157 How many ways?? 题解

    题目 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线 ...

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

    题目来源 https://leetcode.com/problems/decode-ways/ A message containing letters from A-Z is being encod ...

  3. LeetCode OJ 题解

    博客搬至blog.csgrandeur.com,cnblogs不再更新. 新的题解会更新在新博客:http://blog.csgrandeur.com/2014/01/15/LeetCode-OJ-S ...

  4. 91. Decode Ways

    题目: A message containing letters from A-Z is being encoded to numbers using the following mapping: ' ...

  5. [LeetCode] Decode Ways 解题思路

    A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...

  6. 2014年亚洲区域赛北京赛区现场赛A,D,H,I,K题解(hdu5112,5115,5119,5220,5122)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 下午在HDU上打了一下今年北京区域赛的重现,过了5题,看来单挑只能拿拿铜牌,呜呜. ...

  7. POJ 3279(Fliptile)题解

    以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定长宽的黑白棋棋盘摆满棋子,每次操作可以反转一个位置和其上下左右共五个位置的棋子的颜色,求要使用最少翻转次数将所有棋子反转为黑 ...

  8. How many ways(记忆化搜索)

    How many ways Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  9. 1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区(题解第二弹)

    1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit:  ...

随机推荐

  1. 【Jquery】根据元素个数给予宽度

    方法一: $(document).ready(function(){ $(".xn_mc_solu_2_ul").css("width", $(".x ...

  2. iOS -实现UIView圆角显示的方法

    添加一个UIView时,默认直角显示有时对于有强迫症的患者还真有点不舒服! eg: 怎么实现UIview的圆角显示呢? 首先包含一个头文件: #import <QuartzCore/Quartz ...

  3. 想要学深度学习但是没有GPU?我帮你找了一些不错的平台

    本文始发于个人公众号:TechFlow,原创不易,求个关注 上次给大家推荐了免费的spark集群之后,就有很多小伙伴来问我有没有好的云GPU平台推荐.我一直没给大家推荐,主要原因是我常年使用Mac,对 ...

  4. [CF696D]Legen...

    题目   点这里看题目. 分析   首先对于模式串建立 AC 自动机,并且计算出每个状态\(p\)的贡献总和\(con(p)\).   考虑一个朴素的 DP :   \(f(i,p)\):当前串长度为 ...

  5. http的几种请求方法

    1.HTTP请求方法有以下8种方法:OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE和CONNECT. GET GET请求会显示请求指定的资源.一般来说GET方法应该只用于 ...

  6. Python删除一个列表元素的方法

    参考资料: https://www.cnblogs.com/xiaodai0/p/10564956.html https://www.cnblogs.com/huangbiquan/articles/ ...

  7. 三文搞懂学会Docker容器技术(上)

    1,Docker简介 1.1 Docker是什么? Docker官网: https://www.docker.com/ Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2. ...

  8. 必知必会的8个Python列表技巧

    原作者:Nik Piepenbreier 翻译&内容补充:费弗里 原文地址:https://towardsdatascience.com/advanced-python-list-techni ...

  9. JNI通过线程c回调java层的函数

    1.参看博客:http://www.jianshu.com/p/e576c7e1c403 Android JNI 篇 - JNI回调的三种方法(精华篇) 2.参看博客: JNI层线程回调Java函数关 ...

  10. Spring:如何实现注解的组合

    Spring中存在很多注解组合的情况,例如@RestController @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @ ...