HDU2157 How many ways??(可达矩阵+矩阵快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=2157
题目大意:不多赘述。关键是知道题目如何解决。其实其求的就是可达矩阵 (不懂的参看离散数学图论)
在实际系统建模工程中,有向图D={S,R}中,对于Si,Sj 属于S,如果从Si到Sj有任何一条通路存在,则可称Si可达Sj。
利用布尔矩阵的运算性质给出了计算有向图可达矩阵的方法,该方法计算简便.
接下来的解题就是求其K次可达矩阵中[A][B]的值即可。
AC代码
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <stdlib.h>
using namespace std;
typedef long long ll;
const int MAXN = 1e2+7;
const int mod = 1000;
struct martrix {int a[MAXN][MAXN];
}m1,m2;
ll n, m;
ll k;
martrix mul(martrix m1, martrix m2) {martrix m3;memset(m3.a, 0, sizeof m3.a);for(int i = 0;i < n;i++) {for(int j = 0; j < n; j++) {for(int k = 0;k < n; k++) {m3.a[i][j] += m1.a[i][k]*m2.a[k][j];m3.a[i][j] %= mod;}}}return m3;
}
martrix mpow(martrix m1) {martrix res;memset(res.a, 0, sizeof res.a);for(int i = 0; i < n; i++) res.a[i][i] = 1;while(k!=0) {if(k%2!=0) {res = mul(res,m1);k--;}else {m1 = mul(m1,m1);k>>=1;}}return res;
}
int main() {int q;int A,B;int s,e;while(cin >> n >> m && (n+m)) {memset(m1.a,0,sizeof m1.a);while(m--) {cin >> s >> e;m1.a[s][e]= 1;}cin >> q;while(q--) {memset(m2.a,0,sizeof m2.a);cin >> A >> B >> k;m2 = mpow(m1);cout << m2.a[A][B] << endl;}}
}
HDU2157 How many ways??(可达矩阵+矩阵快速幂)相关推荐
- HDU 4565So Easy!2012长沙邀请赛A题(共轭构造+矩阵的快速幂)
So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- 求解斐波那契第n项的几种解法(含矩阵乘法+快速幂) Python实现
斐波那契数列 首先我们来定义一下斐波那契数列: f(n)={0n = 01n = 1f(n−1)+f(n−2)n > 1f(n)= \begin{cases} 0 & \text {n ...
- 【BZOJ 2323】 2323: [ZJOI2011]细胞 (DP+矩阵乘法+快速幂*)
2323: [ZJOI2011]细胞 Description 2222年,人类在银河系外的某颗星球上发现了生命,并且携带了一个细胞回到了地球.经过反复研究,人类已经完全掌握了这类细胞的发展规律: 这种 ...
- [矩阵乘法/快速幂专题]Arc of Dream,Recursive sequence,233 Matrix,Training little cats
矩阵快速幂习题 复习矩阵乘法及快速幂模板 乘法模板 快速幂模板 T1:Arc of Dream 题目 题解 code T2:Recursive sequence 题目 题解 code T3:233 M ...
- bzoj 4417: [Shoi2013]超级跳马(矩阵合并+快速幂)
4417: [Shoi2013]超级跳马 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 410 Solved: 252 [Submit][Stat ...
- 循环矩阵的快速幂(bzoj 2510: 弱题)
2510: 弱题 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 408 Solved: 218 [Submit][Status][Discuss] ...
- [BZOJ3240][Noi2013]矩阵游戏 快速幂
当我知道这题矩阵可以用费马小定理搞快速幂的时候 我眼泪都要落下来了QAQ 首先求一发通项F[1][1]->F[2][1]的通项 然后写成A+B的形式 若a != 1 A = (a^(m-1))* ...
- ZCMU-1618-骨牌覆盖(矩阵乘法+快速幂)
1618: 骨牌覆盖1 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 264 Solved: 124 [Submit][Status][Web Bo ...
- Xn数列(矩阵乘法+快速幂+慢速乘法)
Xn数列 题目描述: 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输入描述: 一行 ...
- 矩阵儿快速幂 - POJ 3233 矩阵力量系列
不要管上面的标题的bug 那是幂的意思,不是力量... POJ 3233 Matrix Power Series 描述 Given a n × n matrix A and a positive in ...
最新文章
- [leetcode]Divide Two Integers
- 1.初学MVC3学习笔记1
- C++基础部分_C++文件操作_二进制文件的写操作---C++语言工作笔记078
- php 字符串分割出数字,php 字符串分割函数的总结
- curl如何发送json数据?如何发送form数据?python的restfull又该如何获取这些数据?...
- vwap 公式_「」当天平均价 股票 公式-通达信当日均价计算公式-TOP金融网
- sdk寄存器地址linux,S32K SDK使用详解之PinSettings组件配置与使用详解(S32K1xx PORT 和GPIO模块)...
- java操作excel表格(最简单的教程!一学即会)
- 浪潮服务器bios更改硬盘模式,bios更改硬盘模式详细教程
- 【Nginx 源码学习】平滑重启,源码追踪
- PNG图片怎么转成ICO?分享两种思路
- 进入旅游营销时代,携程有什么“大招”?
- 【Android Gradle 插件】 Splits 配置 ① ( BaseExtension#splits 配置 | Splits 配置简介 )
- Android入门第十四篇之画图
- Cannot connect to the Maven process.Try again later.If the problem persists...
- Mesos | 1.3.2 webui static 界面代码分析
- php语言中Excel表格导入数据库的方法详解
- linux系统灾难恢复,轻松解决 Linux操作系统故障恢复技巧
- 鼠标每隔几秒失去焦点,鼠标每隔几秒转圈,鼠标每隔几秒刷新
- 明明已经引入了jquery,还是不断地报错,终于找到原因了