水啊水,最后ans别忘了%哦!

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int mo = 45989;
int cnt = 1, point[23], n, m, t, S, T;
struct node {
int u, v, nxt;
} E[1003];
struct Mt {
int v[123][123];
Mt() {memset(v, 0, sizeof(v));}
friend Mt operator * (Mt a, Mt b) {
Mt ans;
for(int i = 1; i <= cnt; ++i)
for(int j = 1; j <= cnt; ++j)
for(int k = 1; k <= cnt; ++k)
ans.v[i][j]=(ans.v[i][j] + a.v[i][k] * b.v[k][j]) % mo;
return ans;
}
friend Mt operator ^ (Mt a, int b) {
Mt ans;
for(int i = 1; i <= cnt; ++i)
ans.v[i][i] = 1;
for(int i = b; i; i >>= 1, a = a * a)
if (i & 1) ans = ans * a;
return ans;
}
}A, B; inline void ins(int x, int y) {E[++cnt].u = x; E[cnt].v = y; E[cnt].nxt = point[x]; point[x] = cnt;}
int main() {
scanf("%d%d%d%d%d", &n, &m, &t, &S, &T);
int u, v;
for(int i = 1; i <= m; ++i) {
scanf("%d%d", &u, &v);
ins(u, v);
ins(v, u);
} for(int tmp = point[S]; tmp; tmp = E[tmp].nxt)
++A.v[1][tmp];
for(int i = 2; i <= cnt; ++i)
for(int j = 2; j <= cnt; ++j)
if (E[i].v == E[j].u && i != (j ^ 1))
++B.v[i][j]; A = A * (B ^ (t - 1));
int ans = 0;
for(int tmp = point[T]; tmp; tmp = E[tmp].nxt)
ans += A.v[1][tmp ^ 1]; printf("%d\n", ans % mo);
return 0;
}

hhh

【BZOJ 1875】【SDOI 2009】HH去散步的更多相关文章

  1. [BZOJ 1875] [SDOI 2009] HH去散步【矩阵乘法】

    题目链接:BZOJ - 1875 题目分析: 这道题如果去掉“不会立刻沿着刚刚走来的路走回”的限制,直接用邻接矩阵跑矩阵乘法就可以了.然而现在加了这个限制,建图的方式就要做一些改变.如果我们把每一条边 ...

  2. [SDOI 2009]HH去散步

    Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又 ...

  3. 【47.40%】【BZOJ 1875】[SDOI2009]HH去散步

    Time Limit: 20 Sec  Memory Limit: 64 MB Submit: 1363  Solved: 646 [Submit][Status][Discuss] Descript ...

  4. sdoi 2009 HH去散步 矩阵乘

    如果没有题里的"不会立刻沿着刚刚走来的路走回"限制,那么直接矩乘计算k步的方案数 但加了这个限制,就不能以点来矩乘了,考虑边数<=60,如果以边建邻接矩阵呢?? 先拆边,再把 ...

  5. BZOJ 1878 SDOI 2009 HH项链 树状数组 + 脱机处理

    标题效果:一些珠子项链.珠具有不同的颜色.我们问了很多次有多少种不同的颜色有过一段范围. 思考:这个问题让我学会聪明的离线实践.按左端点排序问题.加工出来的位置每种颜色首次出现.每一种颜色的下一次出现 ...

  6. BZOJ 1875: [SDOI2009]HH去散步( dp + 矩阵快速幂 )

    把双向边拆成2条单向边, 用边来转移...然后矩阵乘法+快速幂优化 ------------------------------------------------------------------ ...

  7. bzoj 1875: [SDOI2009]HH去散步 -- 矩阵乘法

    1875: [SDOI2009]HH去散步 Time Limit: 20 Sec  Memory Limit: 64 MB Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走, ...

  8. BZOJ 1875 【SDOI2009】 HH去散步

    题目链接:HH去散步 如果不考虑不能走上一次走的边的话,这道题就是一个矩乘的裸题. 现在有了这个条件其实也很好做.我们平常的矩阵都是按点建的,\(A_{i,j}\)表示从第\(i\)个点走到第\(j\ ...

  9. BZOJ-1875 HH去散步 DP+矩阵乘法快速幂

    1875: [SDOI2009]HH去散步 Time Limit: 20 Sec Memory Limit: 64 MB Submit: 1196 Solved: 553 [Submit][Statu ...

  10. bzoj1875: [SDOI2009]HH去散步

    终于A了...早上按自己以前的写法一直WA.下午换了一种写法就A了qwq #include<cstdio> #include<cstring> #include<iost ...

随机推荐

  1. Codeforces Round #283 Div.2 D Tennis Game --二分

    题意: 两个人比赛,给出比赛序列,如果为1,说明这场1赢,为2则2赢,假如谁先赢 t 盘谁就胜这一轮,谁先赢 s 轮则赢得整个比赛.求有多少种 t 和 s 的分配方案并输出t,s. 解法: 因为要知道 ...

  2. u3d_shader_surface_shader_6

    主题:1.膨胀效果:2.surface shader实际生成的代码: o(︶︿︶)o  粘贴复制代码易,理解透彻代码难... 一:膨胀效果 1.在#pragma 编译指令里添加vertex:vert以 ...

  3. 项目-基于视频压缩的实时监控系统--tiny6410

    项目-基于视频压缩的实时监控系统--tiny6410 @国嵌linux学习笔记. 1. 构造服务端结构体 server struct server { int epfd; //保存epoll指针 st ...

  4. Java之单例模式

    单例模式: public class Person{ public static Person per//定义一个静态变量,用来储存当前类的对象 private Person()//构造方法私有化 { ...

  5. [No000017]单词拼写记不住?试试这俩方法-单词拼写,怎么记又快又好?

  6. Android ART运行时与Dalvik虚拟机

    这几天在做一个项目时需要在Android中使用OSGi框架(Apache Felix),于是在一个android 4.4.2 版本系统的某品牌的平板上实验. 实验内容很简单:把felix包里的feli ...

  7. curl命令

    定位后端接口是否ok,经常使用到curl -b/cookie  <name=string/file> cookie字符串或文件读取位置 curl http://localhost --co ...

  8. Java核心技术点之集合框架

    1. 概述     Java集合框架由Java类库的一系列接口.抽象类以及具体实现类组成.我们这里所说的集合就是把一组对象组织到一起,然后再根据不同的需求操纵这些数据.集合类型就是容纳这些对象的一个容 ...

  9. TP框架中用tp模版迁移smarty模版的注意事项

    ThinkPHP使用Smarty模板引擎的流程及注意事项在多人合作的项目中,Smarty模板使用的最多,具体原因百度. 而ThinkPHP中默认使用的模板是Think自己的模板,这就需要修改默认的模板 ...

  10. 4817 江哥的dp题d

    4817 江哥的dp题d  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 已知1-N的排列P的LIS(最长上 ...