[日常摸鱼]HDU2157 How many ways??
2024-09-07 23:23:06
hhh我又开始水题目了
题意:给一张有向图,多次询问一个点到另一个点刚好走$k$步的方案数取模,点数很小
每个$a,b,k$的询问直接把邻接矩阵$map$自乘$k$次后$map[a][b]$就是答案了,别问我怎么证x
话说这个题的范围还可以大好多的…$k$这么小不用快速幂应该都行
#include<cstdio>
#include<cstring>
const int MOD=1000;
const int N=25;
struct matrix
{
int s[N][N];
matrix(){memset(s,0,sizeof(s));}
};
int n,m,T;
inline matrix mul(matrix a,matrix b)
{
matrix res;
for(register int i=0;i<n;i++)
for(register int j=0;j<n;j++)
for(register int k=0;k<n;k++)
res.s[i][j]=(res.s[i][j]+(a.s[i][k]*b.s[k][j])%MOD)%MOD;
return res;
}
inline matrix pow(matrix a,int b)
{
matrix res;
for(register int i=0;i<n;i++)res.s[i][i]=1;
for(;b;b>>=1,a=mul(a,a))if(b&1)res=mul(res,a);
return res;
}
int main()
{
//freopen("input.in","r",stdin);
while(scanf("%d%d",&n,&m)==2&&(n+m))
{
matrix map;
for(register int i=1;i<=m;i++)
{
int u,v;scanf("%d%d",&u,&v);
map.s[u][v]=1;
}scanf("%d",&T);
while(T--)
{
int u,v,k;
scanf("%d%d%d",&u,&v,&k);
matrix a;a=map;
a=pow(a,k);printf("%d\n",a.s[u][v]%MOD);
}
}
return 0;
}
最新文章
- [LeetCode] Roman to Integer 罗马数字转化成整数
- C++箴言:理解typename的两个含义
- 在JAVA中,关于反射机制的讨论
- EXT Grid 默认展开所有行
- ThinkPHP 3.2.3 简单后台模块开发(一)常用配置
- Android基础:Activity
- 快速升级php5.6
- Stanford机器学习---第八讲. 支持向量机SVM
- AutoCompleteTextView自动填充文本
- phpcms日期时间
- 那些年,学swift踩过的坑
- mass种子模块之domready
- Introducing: Machine Learning in R(转)
- 夏令营讲课内容整理 Day 7.
- android studio gradle 更新方法。
- [转]boost::python开发环境搭建
- genymotion 模拟器内安装软件 the app contains ARM native code and your devices cannot run ARM instructions
- Java并发编程73道面试题及答案 —— 面试稳了
- Docker7之Docker overview
- 线段树模板(HDU 6356 Glad You Came)
热门文章
- 【硬件】HDMI接口HPD原理
- 用MindManager画思维导图的好处有哪些?
- Python变量引用
- 【P2634】聪聪可可——点分治
- Jmeter-记一次AES加密登录实例
- SpringBoot整合Elasticsearch7
- [BUGCASE]Webpack打包报JavaScript堆内存泄漏的错误
- 第10.8节 Python包的导入方式详解
- PyQt(Python+Qt)学习随笔:QTableView的cornerButtonEnabled属性
- 性能测试学习之路 (二)jmeter详解(jmeter执行顺序 &;&; 作用域 &;&; 断言 &;&; 事务 &;&;集合点 )