题目链接

一开始特别天真,

$Folyd$传递闭包写了一下过了样例就交上去了

然后$gg$

$qwq$

想了想$……$

还要写一点东西

最后统计答案的时候有细节要注意

/**************************************************************
Problem: 1875
User: zhangheran
Language: C++
Result: Accepted
Time:17164 ms
Memory:3876 kb
****************************************************************/ // luogu-judger-enable-o2
#include<iostream>
#include<cstdio>
//#include"suqingnian.h"
#include<algorithm>
#include<cstring>
using namespace std;
const int mod=;
int n,m,t,a,b;
struct data{
int v;int u;int next;
}edge[];int alist[];int cnt;
void add(int u,int v)
{
edge[++cnt].u=u;
edge[cnt].v=v;
edge[cnt].next=alist[u];
alist[u]=cnt;
return ;
}
struct Martix{
long long num[][];
void hint(){memset(num,,sizeof(num));for(int i=;i<=m*;i++) num[i][i]=;}
void clear(){memset(num,,sizeof(num));}
friend Martix operator *(const Martix &a,const Martix &b)
{
Martix c;
memset(c.num,,sizeof(c.num));
for(int k=;k<=m*;k++)
for(int i=;i<=m*;i++)
for(int j=;j<=m*;j++)
c.num[i][j]=(c.num[i][j]+a.num[i][k]*b.num[k][j]%mod)%mod;
return c;
}
friend Martix operator +(const Martix &a,const Martix &b)
{
Martix c;memset(c.num,,sizeof(c.num));
for(int i=;i<=m*;i++)
for(int j=;j<=m*;j++)
c.num[i][j]=(a.num[i][j]+b.num[i][j])%mod;
return c;
}
};
Martix
_pow(Martix _a,int _b)
{
Martix _res;_res.hint();
for(;_b;_b >>= , _a= _a * _a )
if(_b & ) _res = _res * _a ;
return _res ;
}
int u,v;
Martix map,dis;
int ans=;
int main()
{
memset(alist,-,sizeof(alist));
scanf("%d%d%d%d%d",&n,&m,&t,&a,&b);
a++,b++;
for(int i=;i<=m;i++) scanf("%d%d",&u,&v),add(u+,v+),add(v+,u+);
int next=alist[a];
while(next!=-) map.num[][next]++,next=edge[next].next;
for(int i=;i<=cnt;i++){
v=edge[i].v,next=alist[v];
while(next!=-){
if(next!=(i+((i&)?:-)))
dis.num[i][next]++;
next=edge[next].next;
}
}
dis=_pow(dis,t-);
map=map*dis;
// for(int i=0;i<=m*2;i++,puts(""))
// for(int j=0;j<=m*2;j++)
// printf("%d ",map.num[i][j]);
for(int i=;i<=cnt;i++) if(edge[i].v==b) ans=(ans+map.num[][i])%mod;
printf("%d",ans);
return ;
}

bzoj1875 HH去散步的更多相关文章

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

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

  2. 【Bzoj1875】HH去散步

    [Bzoj1875]HH去散步 先说一下边点互化的思路(貌似这种题不多?),以后看见边数少的要死的记得想边点乎化,将无向边变成有向边在考虑边之间的可达性,如果边x的终点是边y的起点(前提不是同一条边) ...

  3. bzoj1875: [SDOI2009]HH去散步

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

  4. 【bzoj1875】【SDOI2009】【HH去散步】

    1875: [SDOI2009]HH去散步 Time Limit: 20 Sec Memory Limit: 64 MB Submit: 932 Solved: 424 [Submit][Status ...

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

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

  6. BZOJ_1875_[SDOI2009]HH去散步_矩阵乘法

    BZOJ_1875_[SDOI2009]HH去散步_矩阵乘法 Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时H ...

  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. 洛谷P2151 [SDOI2009] HH去散步 [矩阵加速]

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

随机推荐

  1. java 蓝桥杯算法提高 矩阵乘法

    思路:根据提示的内容,我们可以得到c[i][j] += a[i][k]*b[k][j],k>=0&&k<s PS:这道题本身不难,但是当我定义A[m][s] B[s][n] ...

  2. Maven面试宝典啊

    一.Maven有哪些优点和缺点 优点如下: 简化了项目构建.依赖管理: 易于上手,对于新手可能一个"mvn clean package"命令就可能满足他的工作 便于与持续集成工具( ...

  3. ChainOfResponsibilityPattern(23种设计模式之一)

    参考书籍:设计模式-可复用面向对象软件基础(黑皮书) 目的:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿这条链传递该请求,直到有一个对象处理它为止 ...

  4. sql2008 安装提示重启失败

    [转] https://www.cnblogs.com/chenshaogang/p/4313022.html

  5. js运算浮点数

    在js中做小数:9.3+0.3会发现,得到的结果并不是9.6,而是9.600000000000001.这是为什么? Javascript采用了IEEE-745浮点数表示法,这是一种二进制表示法,可以精 ...

  6. easyui combogrid 多选加载,保存,显示代码

    1.调用代码 UTIL.SetDict($("#txt_ExcludeIndustry_"), "SECTOR_TYPE", true, true, funct ...

  7. 给你的LINUX程序加个文字画LOGO

    经常看到很多的程序尤其LINUX程序有文字对应的那种LOGO,好酷炫啊. 研究了好久试了各种方法,后来在GOOGLE中搜索到一个软件叫:figlet 下载地址:http://www.figlet.or ...

  8. js中的函数参数问题

    js函数没有Java中的重载现象.js函数的参数是放在arguments的容器里面的. <script  type="text/javascript"> functio ...

  9. /var/run/yum.pid被锁定

    当执行yum update时出现: /var/run/yum.pid已被锁定,PID为1610的另一个程序正在运行. 另外一个程序锁定了yum:等待它退出...... 解决办法 rm -f /var/ ...

  10. Spring框架总结(十一)

    切入点表达式 可以对指定的“方法”进行拦截:从而给指定的方法所在的类生层代理对象. 其他跟十一样,只更改bean.xml <?xml version="1.0" encodi ...