水啊水,最后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. 将域名从GODADDY转移到namesilo

    1.首先登陆Godaddy的网站http://www.godaddy.com,登陆到后台控制面板,选择要转移的域名 如图所示,进入域名控制面板 2.对域名进行解锁,如果不进行解锁的话,域名是无法进行转 ...

  2. Object-C中self和super的区别

    self与super的区别 原文CSDN evilotus 有所整理 **** 在ObjC中的类实现中经常看到这两个关键字"self"和"super",以以前o ...

  3. 移动测试会Ebay沙龙PPT

    Bill Liu --如何让你的测试更敏捷ebay沈斌峰 --Mobile Automation TestingJason Woo -- Full Stack Testing http://teste ...

  4. ATM模拟程序

    一个很简单的ATM模拟程序 #include <stdio.h> void chaxun(int a3){ int b; b=a3; printf("您的余额为:%d\n&quo ...

  5. Hibernate一对一关系映射

    Hibernate提供了两种一对一映射关联关系的方式: 1)按照外键映射 2)按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映 ...

  6. SQL部分 数据库的建立 增删改查

    数据库: 结构化查询语言(Structured Query Language)简称SQL: 数据库管理系统(Database Management System)简称DBMS: 数据库管理员(Data ...

  7. jmeter的http sample使用

    1.jmeter最简单的http sample 使用 : 最简单的get请求, 输入服务器名称或者ip, 如果有路径则添加路径 ,带参数的添加具体的参数及values值 parameters 和 bo ...

  8. java 28 - 3 设计模式之 装饰设计模式

    装饰设计模式 装饰设计模式概述 装饰模式就是使用被装饰类的一个子类的实例,在客户端将这个子类的实例交给装饰类.是继承的替代方案 优点 使用装饰模式,可以提供比继承更灵活的扩展对象的功能,它可以动态的添 ...

  9. toodifficult 题解

    名字听起来十分厉害啊...一道lzz的提交答案题. 提答题,我们看看题目,给出一个解密程序,叫你加密. 每个点有一个加密的sample和一些要加密的文本. 从题目中我们可以得到一些信息: 加密后一般为 ...

  10. AWS CLI 中使用S3存储

    登录 通过控制面板, 在S3管理器中创建一个新的bucket 所有AWS服务 -> 安全&身份 -> IAM -> 组, 创建一个新的组, 例如 "s3-user& ...