思路:不能走走过来的路,变点交换跑矩阵快速幂。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PII pair<int, int>
#define y1 skldjfskldjg
#define y2 skldfjsklejg
using namespace std; const int N = 1e5 + ;
const int M = 5e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = ; int n, m, t, S, T, U[N], V[N], b[N]; struct Matrix {
int a[][], n; Matrix(int _n) {
n = _n;
memset(a, , sizeof(a));
} void init() {
for(int i = ; i < n; i++)
a[i][i] = ;
} Matrix operator * (const Matrix &B) const {
Matrix C(n);
for(int i = ; i < n; i++)
for(int j = ; j < n; j++)
for(int k = ; k < n; k++)
C.a[i][j] = (C.a[i][j] + a[i][k] * B.a[k][j]) % mod;
return C;
} Matrix operator ^ (int b) {
Matrix A = (*this);
Matrix ans(n);
ans.init();
while(b) {
if(b & ) ans = ans * A;
A = A * A; b >>= ;
}
return ans;
}
};
int main() {
scanf("%d%d%d%d%d", &n, &m, &t, &S, &T);
for(int i = ; i <= m; i++) {
scanf("%d%d", &U[i << ], &V[i << ]);
U[i << | ] = V[i << ];
V[i << | ] = U[i << ];
}
m = m << | ;
Matrix A(m + );
for(int i = ; i <= m; i++) {
if(U[i] == S) A.a[][i] = ;
if(V[i] == T) A.a[i][] = ;
for(int j = ; j <= m; j++)
if(V[i] == U[j] && (i ^ j) != )
A.a[i][j] = ;
}
A = A ^ (t + );
printf("%d\n", A.a[][]);
return ;
}

bzoj 1875 矩阵快速幂的更多相关文章

  1. bzoj(矩阵快速幂)

    题意:定义Concatenate(1,N)=1234567……n.比如Concatenate(1,13)=12345678910111213.给定n和m,求Concatenate(1,n)%m. (1 ...

  2. bzoj 2326 矩阵快速幂

    思路:矩阵快速幂搞一搞. #include<bits/stdc++.h> #define LL long long #define fi first #define se second # ...

  3. bzoj 4000 矩阵快速幂优化DP

    建立矩阵,跑快速幂 /************************************************************** Problem: 4000 User: idy002 ...

  4. bzoj 1898 矩阵快速幂

    思路:因为鱼的周期为2, 3, 4, 所以以12个为周期,我们拿走12步得到的矩阵进行快速幂,余下的再进行一次矩阵乘法. #include<bits/stdc++.h> #define L ...

  5. BZOJ 4547 矩阵快速幂

    思路: 肯定每回只加最大值和次大值 如果 一开始的最大值>0且次大值<0 那就一直加 加到次大值>0 搞一个矩阵 推斐波那契数列 求和 就好- //By SiriusRen #inc ...

  6. 【BZOJ】1875: [SDOI2009]HH去散步 矩阵快速幂

    [题意]给定n个点m边的无向图,求A到B恰好经过t条边的路径数,路径须满足每条边都和前一条边不同.n<=20,m<=60,t<=2^30. [算法]矩阵快速幂 [题解]将图的邻接矩阵 ...

  7. BZOJ 2510: 弱题( 矩阵快速幂 )

    每进行一次, 编号为x的数对x, 和(x+1)%N都有贡献 用矩阵快速幂, O(N3logK). 注意到是循环矩阵, 可以把矩阵乘法的复杂度降到O(N2). 所以总复杂度就是O(N2logK) --- ...

  8. BZOJ 1009: [HNOI2008]GT考试( dp + 矩阵快速幂 + kmp )

    写了一个早上...就因为把长度为m的也算进去了... dp(i, j)表示准考证号前i个字符匹配了不吉利数字前j个的方案数. kmp预处理, 然后对于j进行枚举, 对数字0~9也枚举算出f(i, j) ...

  9. BZOJ 2875: [Noi2012]随机数生成器( 矩阵快速幂 )

    矩阵快速幂...+快速乘就OK了 ----------------------------------------------------------------------------------- ...

随机推荐

  1. GTY's gay friends HDU - 5172 线段树

    GTY has nn gay friends. To manage them conveniently, every morning he ordered all his gay friends to ...

  2. python学习笔记(三)高级特性

    一.切片 list.tuple常常截取某一段元素,截取某一段元素的操作很常用 ,所以python提供了切片功能. L=['a','b','c','d','e','f'] #取索引0,到索引3的元素,不 ...

  3. sleep php函数

    <?php echo date('h:i:s') . "<br />"; //暂停 10 秒 sleep(10); //重新开始 echo date('h:i:s ...

  4. discuz 删除垃圾帖子

    有时候如果你的论坛被垃圾帖子占满后,会发现使用后台的删除功能还是有些慢, 我们需要先备份自己需要的帖子,然后进行下面的操作: 具体删除帖子的步骤,就是清空数据库里面的两张数据库表:pre_forum_ ...

  5. svn常见错误

    1.svn提交报错:svn: Aborting commit:XXXXXremains in conflict 解决:说明Svn服务器上的对应内容,在你上次Update后已被别人修改了,而你也做了修改 ...

  6. Windows API函数大全(精心总结)

    WindowsAPI函数大全(精心总结)    目录 1. API之网络函数... 1 2. API之消息函数... 1 3. API之文件处理函数... 2 4. API之打印函数... 5 5. ...

  7. [Luogu 2486] SDOI2011 染色

    [Luogu 2486] SDOI2011 染色 树剖水题,线段树维护. 详细题解不写了. 我只想说我写的线段树又变漂亮了qwq #include <algorithm> #include ...

  8. 利用ChainMap进行多字典合并

    aa = [{105199: 'https://picx0.jpeg'}, {105187: 'https://picx1.jpeg'}, {105170: 'https:picx2.jpeg'}, ...

  9. SpringCloud (一)Eureka注册中心搭建

    前提 系统安装jdk1.8及以上,配置好maven的ide(这里用idea进行演示,maven版本3.5,配置阿里云源) 项目搭建 新建一个maven项目,创建最简单的那种就好,项目名这里为Eurek ...

  10. 【BZOJ】3771: Triple FTT+生成函数

    [题意]给定n个物品,价值为$a_i$,物品价格互不相同,求选一个或两个或三个的价值为x的方案数,输出所有存在的x和对应方案数.$ai<=40000$. [算法]生成函数+FFT [题解]要求价 ...