题目链接

一开始特别天真,

$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. 40行代码爬取猫眼电影TOP100榜所有信息

    主要内容: 一.基础爬虫框架的三大模块 二.完整代码解析及效果展示 1️⃣  基础爬虫框架的三大模块 1.HTML下载器:利用requests模块下载HTML网页. 2.HTML解析器:利用re正则表 ...

  2. 网页静态化—redis | freemarker

    1.   学习计划 1.商品详情页面展示,动态展示 jsp + redis 2.使用freemarker实现网页静态化 3.ActiveMq同步生成静态网页 两个方案对比,方案一依赖web容器,red ...

  3. selenium3 下载、配置

    s1-s3发展历程  : http://www.cnblogs.com/hhudaqiang/p/6550135.html 官网地址:http://www.seleniumhq.org/文档:http ...

  4. 快速上手Runtime(四)之动态添加方法

    如果一个类方法非常多,加载类到内存的时候也比较耗费资源,可以使用动态给某个类,添加方法解决.做到优化内存,节省资源的效果. // // Person.m // ResolveInstanceMetho ...

  5. 91. Decode Ways反编译字符串

    [抄题]: A message containing letters from A-Z is being encoded to numbers using the following mapping: ...

  6. CloudStack 初始化执行命令流分析

                查询路由元素   选择可以使用的路由元素   需要将网络服务提供者的:虚拟路由和安全同时启用   { "createnetworkresponse" : { ...

  7. 文件操作putc

    putc是把一个字符写入到指定文件中,每写一个字符,文件指针自动加1. 我写了一个随机生成255字符到d:/456.txt的程序. int main() { FILE *p; int num[255] ...

  8. win7 + eclipse + cocos2dx 开发环境配置

    最近想在win7上配置eclipse+cocos2dx开发环境,在安装之前一定要注意每项是32位还是64位,我选择的都是64位版本的,闲话少叙我们开始安装吧! 1.下载cocos2dx,我选择的是co ...

  9. Flask框架 之 信号

    Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为. 安装 pip3 install blinker 内置信号 request_started = ...

  10. 01 A Counting DNA Nucleotides

    Problem A string is simply an ordered collection of symbols selected from some alphabet and formed i ...