1. /**
  2. 题目:Lost in WHU
  3. 链接:https://oj.ejq.me/problem/26
  4. 题意:一个无向图,求从1出发到达n最多经过T条边的方法数,边可以重复经过,到达n之后不可以再离开。
  5. 思路:一个邻接矩阵(01矩阵)自身的T次方那么,a[i][j]的结果表示i到j经过T条边的方法数。(通过矩阵相乘理解
  6. c.m[i][j] = (c.m[i][j]+a.m[i][k]*b.m[k][j]%mod)%mod; 表示i到j,通过i先到k,然后k到j;)
  7. 那么求a[1][n]的T步就是T个a矩阵相乘;
  8. 由于本题是T以内的方法数。那么通过对矩阵相乘的理解,可以想到增加一个n到达n的边。这时候保证T个矩阵相乘的过程中,当前已经获得的矩阵c
  9. 乘以一个a矩阵后,可以保证原先的c[1][n]方法数累加进去。即:c.m[1][n]*a.m[n][n];
  10. 然后用快速幂加速矩阵相乘即可。
  11. */
  12. #include<bits/stdc++.h>
  13. typedef long long ll;
  14. using namespace std;
  15. const int maxn = 1e2+;
  16. const int mod = 1e9+;
  17. int n, m, k;
  18. struct mat
  19. {
  20. ll m[maxn][maxn];
  21. mat operator*(const mat &b){
  22. mat c, a = *this;
  23. memset(c.m, , sizeof c.m);
  24. for(int i = ; i <= n; i++){
  25. for(int j = ; j <= n; j++){
  26. for(int k = ; k <= n; k++){
  27. c.m[i][j] = (c.m[i][j]+a.m[i][k]*b.m[k][j]%mod)%mod;
  28. }
  29. }
  30. }
  31. return c;
  32. }
  33. mat operator^(int y){
  34. mat x = *this;
  35. mat p;
  36. memset(p.m, , sizeof p.m);
  37. for(int i = ; i <= n; i++){
  38. p.m[i][i] = ;
  39. }
  40. while(y>){
  41. if(y&) p = p*x;
  42. x = x*x;
  43. y >>= ;
  44. }
  45. return p;
  46. }
  47. } x;
  48. /*
  49. ll solve(int y)
  50. {
  51. mat p;
  52. memset(p.m, 0, sizeof p.m);
  53. for(int i = 1; i <= n; i++){
  54. p.m[i][i] = 1;
  55. }
  56. while(y>0){
  57. if(y&1) p = p*x;
  58. x = x*x;
  59. y >>= 1;
  60. }
  61. return p.m[1][n];
  62. }*/
  63. int main()
  64. {
  65. while(scanf("%d%d",&n,&m)!=EOF)
  66. {
  67. int u, v;
  68. memset(x.m, , sizeof x.m);
  69. for(int i = ; i < m; i++){
  70. scanf("%d%d",&u,&v);
  71. x.m[u][v] = x.m[v][u] = ;
  72. }
  73. for(int i = ; i < n; i++) x.m[n][i] = ;///到达终点后不可以再出去,除非去自身。
  74. x.m[n][n] = ;
  75. scanf("%d",&k);
  76. //printf("%lld\n",solve(k));
  77. mat ans = x^k;
  78. printf("%lld\n",ans.m[][n]);
  79. }
  80. return ;
  81. }

2017 Wuhan University Programming Contest (Online Round) Lost in WHU 矩阵快速幂 一个无向图,求从1出发到达n最多经过T条边的方法数,边可以重复经过,到达n之后不可以再离开。的更多相关文章

  1. 2017 Wuhan University Programming Contest (Online Round) D. Events,线段树区间更新+最值查询!

    D. Events 线段树区间更新查询区间历史最小值,看似很简单的题意写了两天才写出来. 题意:n个数,Q次操作,每次操作对一个区间[l,r]的数同时加上C,然后输出这段区间的历史最小值. 思路:在线 ...

  2. 2017 Wuhan University Programming Contest (Online Round) C. Divide by Six 分析+模拟

    /** 题目:C. Divide by Six 链接:https://oj.ejq.me/problem/24 题意:给定一个数,这个数位数达到1e5,可能存在前导0.问为了使这个数是6的倍数,且没有 ...

  3. 2017 Wuhan University Programming Contest (Online Round) B Color 树形dp求染色方法数

    /** 题目:Color 链接:https://oj.ejq.me/problem/23 题意:给定一颗树,将树上的点最多染成m种颜色,有些节点不可以染成某些颜色.相邻节点颜色不同.求染色方法数. 思 ...

  4. Educational Codeforces Round 60 D dp + 矩阵快速幂

    https://codeforces.com/contest/1117/problem/D 题意 有n个特殊宝石(n<=1e18),每个特殊宝石可以分解成m个普通宝石(m<=100),问组 ...

  5. Educational Codeforces Round 14E. Xor-sequences(矩阵快速幂)

    传送门 题意 给定序列,从序列中选择k(1≤k≤1e18)个数(可以重复选择),使得得到的排列满足\(x_i与x_{i+1}\)异或的二进制表示中1的个数是3的倍数.问长度为k的满足条件的序列有多少种 ...

  6. 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Coin 矩阵快速幂

    Bob has a not even coin, every time he tosses the coin, the probability that the coin's front face u ...

  7. zoj 4020 The 18th Zhejiang University Programming Contest Sponsored by TuSimple - G Traffic Light(广搜)

    题目链接:The 18th Zhejiang University Programming Contest Sponsored by TuSimple - G Traffic Light 题解: 题意 ...

  8. hdu 5607 BestCoder Round #68 (矩阵快速幂)

    graph  Accepts: 9 Submissions: 61  Time Limit: 8000/4000 MS (Java/Others)  Memory Limit: 65536/65536 ...

  9. 【UOJ#340】【清华集训2017】小 Y 和恐怖的奴隶主(矩阵快速幂,动态规划)

    [UOJ#340][清华集训2017]小 Y 和恐怖的奴隶主(矩阵快速幂,动态规划) 题面 UOJ 洛谷 题解 考虑如何暴力\(dp\). 设\(f[i][a][b][c]\)表示当前到了第\(i\) ...

随机推荐

  1. apk打包

    1.在导航栏中选择Builder->Generate Signed Apk 2.新建点击Creat new... 3.注意路径后面写apk的名字(这个名字将会显示在手机软件的下方)

  2. Sublime Text:格式化插件HTML-CSS-JS Prettify

    Sublime Text:插件HTML-CSS-JS Prettify可以格式化HMTL/CSS/JS 1.安装Node.js 2.Sublime中ctrl+shift+p,输入ip: 3.点击Ins ...

  3. fedora25 采用二进制包安装mysql5.5.49

    #添加用户和组 groupadd mysql useradd -s /sbin/nologin -g mysql -M mysql /etc/passwd id mysql #安装依赖包 [root@ ...

  4. 通过python脚本查看端口

    [root@zabbix-server alertscripts]# cat check_port1.py #!/usr/bin/env python #coding:utf-8 import os, ...

  5. flask_admin model官方文档学习

    文档地址:http://www.minzhulou.com/docs/flask-admin/api/mod_model.html model在flask_admin算是比较重要的部分,根据文档稍微的 ...

  6. 【AS3 Coder】任务六:人物换装(纸娃娃)系统的制作

    使用框架:AS3(Flash Professional CS5.0及更高版本 + Flash Buider)任务描述:了解人物换装系统的制作原理难度系数:2 本章源码下载:http://www.iam ...

  7. idea 配置Spring MVC

    一.idea 生成的Spring MVC 项目将<url-pattern>.form<url-pattern>改成<url-pattern>.do<url-p ...

  8. 爪哇国新游记之二十八----从url指定的地址下载文件到本地

    package download; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; ...

  9. B1:模板方法模式 TemplateMethod

    定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤 应用场景: A.操作步骤稳定,而具体细节延迟到子类. UML: 示例代码: ...

  10. Unity3d 嵌入GoogleMap

    原地址“http://cl314413.blog.163.com/blog/static/190507976201442371753142/ 新建工程导入Google Maps for Unity包 ...