news 2026/6/10 15:05:36

2025年3月GESP真题及题解(C++七级): 图上移动

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2025年3月GESP真题及题解(C++七级): 图上移动

2025年3月GESP真题及题解(C++七级): 图上移动

题目描述

小 A 有一张包含n nn个结点与m mm条边的无向图,结点以1 , 2 , … , n 1, 2, \dots, n1,2,,n标号。小 A 会从图上选择一个结点作为起点,每一步移动到某个与当前小 A 所在结点相邻的结点。对于每个结点i ii1 ≤ i ≤ n 1 \leq i \leq n1in),小 A 想知道从结点i ii出发恰好移动1 , 2 , … , k 1, 2, \dots, k1,2,,k步之后,小 A 可能会位于哪些结点。由于满足条件的结点可能有很多,你只需要求出这些结点的数量。

输入格式

第一行,三个正整数n , m , k n, m, kn,m,k,分别表示无向图的结点数与边数,最多移动的步数。

接下来m mm行,每行两个正整数u i , v i u_i, v_iui,vi,表示图中的一条连接结点u i u_iuiv i v_ivi的无向边。

输出格式

n nn行,第i ii行 (1 ≤ i ≤ n 1 \leq i \leq n1in) 包含k kk个整数,第j jj个整数 (1 ≤ j ≤ k 1 \leq j \leq k1jk) 表示从结点i ii出发恰好移动j jj步之后可能位置的结点数量。

输入输出样例 1
输入 1
4 4 3 1 2 1 3 2 3 3 4
输出 1
2 4 4 2 4 4 3 3 4 1 3 3
说明/提示

对于20 % 20\%20%的测试点,保证k = 1 k = 1k=1

对于另外20 % 20\%20%的测试点,保证1 ≤ n ≤ 50 , 1 ≤ m ≤ 50 1 \leq n \leq 50, 1 \leq m \leq 501n50,1m50

对于所有测试点,保证1 ≤ n ≤ 500 , 1 ≤ m ≤ 500 , 1 ≤ k ≤ 20 , 1 ≤ u i , v i ≤ n 1 \leq n \leq 500, 1 \leq m \leq 500, 1 \leq k \leq 20, 1 \leq u_i, v_i \leq n1n500,1m500,1k20,1ui,vin

思路分析

本题要求计算从每个结点出发,恰好移动 1 到 k 步后可能到达的不同结点数量。由于 k 较小(≤20),可以采用动态规划方法对每个起点单独计算。

对于每个起点 s:

  • 定义状态dp[j][v]表示从 s 出发恰好 j 步能否到达结点 v。
  • 初始状态:dp[0][s] = true,其余为 false。
  • 状态转移:对于步数 j 从 1 到 k,遍历每条边 (u, v),若dp[j-1][u]为 true,则dp[j][v]置为 true;同理,若dp[j-1][v]为 true,则dp[j][u]置为 true。因为是无向图,每条边可以双向行走。
  • 最终对于每个 j,统计dp[j][v]中 true 的数量即为答案。

时间复杂度:共 n 个起点,每个起点进行 k 轮转移,每轮遍历 m 条边,总复杂度 O(n * k * m),在题目数据范围(n,m ≤ 500, k ≤ 20)下完全可行。

代码实现

#include<iostream>#include<cstring>usingnamespacestd;constintMAXN=505;// 最大结点数constintMAXK=25;// 最大步数+5constintMAXM=505;// 最大边数booldp[MAXK][MAXN];// dp[步数][结点]:从当前起点出发恰好j步能否到达该结点pair<int,int>edges[MAXM];// 存储所有边intmain(){intn,m,k;cin>>n>>m>>k;// 读入边for(inti=0;i<m;i++){intu,v;cin>>u>>v;edges[i]={u,v};// 存为pair方便使用}// 对每个起点分别计算for(intstart=1;start<=n;start++){// 初始化dp数组为falsememset(dp,0,sizeof(dp));// 0步时只能到达起点自身dp[0][start]=true;// 动态规划:计算恰好j步的可达性for(intj=1;j<=k;j++){// 遍历每条边进行转移for(inti=0;i<m;i++){intu=edges[i].first,v=edges[i].second;// 如果上一步能到达u,则这一步可以通过边(u,v)到达vif(dp[j-1][u]){dp[j][v]=true;}// 无向图,反向同理if(dp[j-1][v]){dp[j][u]=true;}}}// 输出结果:对于每个步数j,统计可达结点数量for(intj=1;j<=k;j++){intcnt=0;for(intv=1;v<=n;v++){if(dp[j][v])cnt++;}cout<<cnt;if(j<k)cout<<" ";// 行内空格分隔}cout<<endl;// 换行进入下一个起点}return0;}

功能分析

  1. 输入处理

    • 读取结点数 n、边数 m 和最大步数 k。
    • 存储 m 条无向边。
  2. 核心计算

    • 外层循环遍历每个起点 start(1 到 n)。
    • 对每个起点,使用二维布尔数组 dp 记录可达性。
    • 动态规划过程模拟了所有可能的移动路径(允许重复访问结点和边)。
    • 通过遍历所有边进行状态转移,确保考虑所有可能的移动。
  3. 输出结果

    • 对每个起点,输出 k 个整数,分别表示移动 1 到 k 步后可能位置的数量。
  4. 算法特点

    • 利用 k 较小的条件,采用朴素的动态规划即可高效求解。
    • 每个起点独立计算,逻辑清晰,易于实现。
    • 正确处理无向边和自环(如果存在)的情况。
  5. 复杂度

    • 时间复杂度:O(n * k * m),最大为 500 × 20 × 500 = 5 × 10^6,运行速度快。
    • 空间复杂度:O(k * n + m),主要用于存储 dp 数组和边列表。

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:13:31

Hunyuan-MT-7B-WEBUI步骤详解:轻松实现法语到中文精准翻译

Hunyuan-MT-7B-WEBUI步骤详解&#xff1a;轻松实现法语到中文精准翻译 1. 背景与技术价值 随着全球化进程的加速&#xff0c;跨语言沟通需求日益增长。在众多AI大模型应用场景中&#xff0c;高质量机器翻译始终是企业、开发者乃至个人用户的核心刚需。传统翻译工具往往受限于…

作者头像 李华
网站建设 2026/6/10 14:14:21

Emotion2Vec+ Large智能家居控制?语音情绪触发指令设想

Emotion2Vec Large智能家居控制&#xff1f;语音情绪触发指令设想 1. 引言&#xff1a;从情感识别到智能交互的跃迁 随着人工智能技术的发展&#xff0c;语音交互已不再局限于“唤醒词命令”的固定模式。用户期望更自然、更具感知能力的人机交互方式。Emotion2Vec Large 作为…

作者头像 李华
网站建设 2026/6/10 14:14:20

5分钟部署GPT-OSS-20b,vLLM镜像让AI推理快速上手

5分钟部署GPT-OSS-20b&#xff0c;vLLM镜像让AI推理快速上手 1. 背景与核心价值 随着大模型技术的快速发展&#xff0c;本地化、低成本部署高性能语言模型已成为开发者和研究者的迫切需求。OpenAI于2025年8月正式开源其gpt-oss-20b模型&#xff0c;标志着其自GPT-2以来首次开…

作者头像 李华
网站建设 2026/6/10 14:14:32

万物识别-中文-通用领域使用全解析,新手也能懂

万物识别-中文-通用领域使用全解析&#xff0c;新手也能懂 1. 引言&#xff1a;什么是万物识别&#xff1f; 在人工智能快速发展的今天&#xff0c;图像理解能力已成为智能系统的核心能力之一。从识别一张照片中的猫狗&#xff0c;到判断工业流水线上的缺陷产品&#xff0c;视…

作者头像 李华
网站建设 2026/6/10 14:14:22

中文文本指代消解:bert-base-chinese方案

中文文本指代消解&#xff1a;bert-base-chinese方案 1. 技术背景与问题提出 在中文自然语言处理&#xff08;NLP&#xff09;任务中&#xff0c;指代消解&#xff08;Coreference Resolution&#xff09;是一项关键的语义理解任务&#xff0c;其目标是识别文本中指向同一实体…

作者头像 李华
网站建设 2026/6/10 14:14:21

麦橘超然显存爆了怎么办?CPU卸载优化部署实战指南

麦橘超然显存爆了怎么办&#xff1f;CPU卸载优化部署实战指南 1. 引言&#xff1a;AI图像生成的显存挑战与“麦橘超然”的应对策略 随着Stable Diffusion、Flux等扩散模型在AI绘画领域的广泛应用&#xff0c;高质量图像生成对GPU显存的需求日益增长。尤其在消费级设备或云服务…

作者头像 李华