洛谷P3758 [TJOI2017]可乐

这道题来自加里敦星球,描述了一个可乐机器人在城市间的随机行为。机器人有停在原地、前往相邻城市或自爆三种行为,每秒随机触发。给定城市图和时间tt,求机器人在tt秒后的行为方案数。问题转化为计算从1号城市出发到达所有城市的路径数量,使用邻接矩阵和快速幂模板解决。提供了解题思路和洛谷大神的代码参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题链接
题目描述
加里敦星球的人们特别喜欢喝可乐。因而,他们的敌对星球研发出了一个可乐机器人,并且放在了加里敦星球的 11 号城市上。这个可乐机器人有三种行为: 停在原地,去下一个相邻的城市,自爆。它每一秒都会随机触发一种行为。现在给加里敦星球城市图,在第 00 秒时可乐机器人在 11 号城市,问经过了 tt 秒,可乐机器人的行为方案数是多少?

输入格式
第一行输入两个正整数 NN,MM。NN 表示城市个数,MM 表示道路个数。

接下来 MM 行每行两个整数 uu,vv,表示 uu,vv 之间有一条道路。保证两座城市之间只有一条路相连,且没有任何一条道路连接两个相同的城市。

最后一行是一个整数 tt,表示经过的时间。

输出格式
输出可乐机器人的行为方案数,答案可能很大,请输出对 20172017 取模后的结果。

输入输出样例
输入

3 2
1 2
2 3
2

输出

8

思路与分析
这是一道使用了邻接矩阵快速幂模板的题目,题目中最后的行为方案数就是从矩阵顶点1出发到所有顶点(0-n)的路径数量,具体的思路写在代码注释中

这里直接放上洛谷lgswdn大佬的代码(因为自己的实在太丑,同时也作为模板进行参考与使用)(略有改动)

模板代码

#include<bits/stdc++.h>
using namespace std;

const int N = 31;//矩阵的最大大小
const int MOD = 2017;//模数

int n,m,t,ans;//矩阵大小 边的数量 
struct mat
{
    //朴素矩阵 
	int a[N][N];
	mat(){
   memset(a,0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值