bzoj1875
我们知道,邻接矩阵自乘t次就是经过t条边的路径数
但这道题显然不能这样,因为不能走回头路
于是我们可以构造边的邻接矩阵矩乘即可
const mo=;
type way=record
po,fr:longint;
end;
node=array[..,..] of longint; var c,a,w:node;
ed:array[..] of way;
x,y,n,m,s,t,e,i,j,ans,len:longint; procedure add(x,y:longint);
begin
inc(len);
ed[len].po:=y;
ed[len].fr:=x;
end; procedure mul(var c:node;a,b:node);
var i,j,k:longint;
begin
for i:= to len do
for j:= to len do
begin
c[i,j]:=;
for k:= to len do
c[i,j]:=(c[i,j]+a[i,k]*b[k,j]) mod mo;
end;
end; procedure quick(n:longint);
begin
while n> do
begin
if n mod = then mul(a,a,w);
mul(w,w,w);
n:=n shr ;
end;
end; begin
len:=;
readln(n,m,t,s,e);
inc(s);
inc(e);
for i:= to m do
begin
readln(x,y);
inc(x); inc(y);
add(x,y);
add(y,x);
end;
for i:= to len do
begin
for j:= to len do
if (i xor <>j) then
if ed[i].po=ed[j].fr then w[i,j]:=;
a[i,i]:=;
if ed[i].fr=s then c[,i]:=;
end;
quick(t-);
mul(c,c,a);
for i:= to len do
if ed[i].po=e then ans:=(ans+c[,i]) mod mo;
writeln(ans mod mo);
end.
bzoj1875的更多相关文章
- BZOJ1875 [SDOI2009]HH去散步 矩阵
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1875 题意概括 在一个无向图(有重边无自环)中走,不能在经过连续经过某一条边2次. 现在走t步,问 ...
- 【题解】 bzoj1875: [SDOI2009]HH去散步 (动态规划+矩阵乘法)
bzoj1875,懒得复制,戳我戳我 Solution: 看到这道题,看的出是个dp,每个点\(t\)时刻到达的方案数等于\(t-1\)到连过来的点方案数之和 但又因为题目有要求不能走一样的边回去不是 ...
- 【Bzoj1875】HH去散步
[Bzoj1875]HH去散步 先说一下边点互化的思路(貌似这种题不多?),以后看见边数少的要死的记得想边点乎化,将无向边变成有向边在考虑边之间的可达性,如果边x的终点是边y的起点(前提不是同一条边) ...
- BZOJ-1875 HH去散步 DP+矩阵乘法快速幂
1875: [SDOI2009]HH去散步 Time Limit: 20 Sec Memory Limit: 64 MB Submit: 1196 Solved: 553 [Submit][Statu ...
- bzoj1875: [SDOI2009]HH去散步
终于A了...早上按自己以前的写法一直WA.下午换了一种写法就A了qwq #include<cstdio> #include<cstring> #include<iost ...
- 【BZOJ1875】【矩阵乘法】[SDOI2009]HH去散步
Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因 ...
- bzoj1875 边点互换+矩乘
https://www.lydsy.com/JudgeOnline/problem.php?id=1875 题意 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走 ...
- [bzoj1875][SDOI2009] HH去散步 [dp+矩阵快速幂]
题面 传送门 正文 其实就是让你求有多少条长度为t的路径,但是有一个特殊条件:不能走过一条边以后又立刻反着走一次(如果两次经过同意条边中间隔了别的边是可以的) 如果没有这个特殊条件,我们很容易想到dp ...
- 【bzoj1875】【JZYZOJ1354】[SDOI2009]HH去散步 矩阵快速幂 点边转换
http://172.20.6.3/Problem_Show.asp?id=1354 http://www.lydsy.com/JudgeOnline/problem.php?id=1875 题意: ...
随机推荐
- QT/C++ 智能指针
什么是智能指针? 为什么用智能指针? 还有哪些关于内存管理方面的知识点,需要注意的?
- python 安装mysql 客户端遇到的问题
一. Win7 64位编译Python扩展解决”error: Unable to find vcvarsall.bat”问题 系统上安装有Visual Studio 2010以及相应的SDK,然后 ...
- OpenJudge/Poj 1251 丛林中的路/Jungle Roads
1.链接地址: http://bailian.openjudge.cn/practice/1251/ http://poj.org/problem?id=1251 2.题目: 总时间限制: 1000m ...
- Linux – RedHat7 / CentOS 7 忘记root密码修改
1.(a) 开机出现grub boot loader 开机选项菜单时,立即点击键盘任意鍵,boot loader 会暂停. (b) 按下’e’,编辑选项菜单(c) 移动上下鍵至linux16 核心命令 ...
- div+css实现的左右两个等高div
工作当中我们经常会有这样的需求,尤其是在一些内容页面或者网站后台管理页面:左边的div的高度会随着右边的div的内容的增加儿增加,右边div的高度也会随着左边div的内容的增加而增加,也就是左右两侧两 ...
- Java学习--final与static
final是java的关键字,它所表示的是“这部分是无法修改的”. 编译期常量,它在类加载的过程就已经完成了初始化,所以当类加载完成后是不可更改的,编译期可以将它代入到任何用到它的计算式中,也就是说可 ...
- 【存储器相关】RAM、SRAM、SDRAM、ROM、EPROM、EEPROM、Flash存储器区别
常见存储器概念:RAM.SRAM.SDRAM.ROM.EPROM.EEPROM.Flash存储器可以分为很多种类,其中根据掉电数据是否丢失可以分为RAM(随机存取存储器)和ROM(只读存储器),其中R ...
- HtmlTestRunner二次封装(TestRunner.py)
将HtmlTestRunner进行二次封装,使报告生成的更方便 import HTMLTestRunner import unittest import time, os class TestRunn ...
- App新版本提醒
童鞋们是否遇过在使用app的时候出现有新版本更新跳转到苹果商店的提示呢? github中有一个三方框架 Harpy 完美实现了这一功能! demo时刻 我的github - Harpy
- POSIX多线程编程(上)-基本概念
线程概念 我们把正在计算机中执行的程序叫做"进程"(Process) ,而不将其称为程序(Program).所谓"线程"(Thread),是"进程&q ...