GESP认证C++编程真题解析 | P11962 [GESP202503 六级] 树上漫步

news/2026/1/17 9:18:29/文章来源:https://www.cnblogs.com/guolianggsta/p/19495144

欢迎大家订阅我的CSDN专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


【题目来源】

洛谷:[P11962 GESP202503 六级] 树上漫步 - 洛谷

【题目描述】

小 A 有一棵 \(n\) 个结点的树,这些结点依次以 \(1,2,⋯,n\) 标号。

小 A 想在这棵树上漫步。具体来说,小 A 会从树上的某个结点出发,每⼀步可以移动到与当前结点相邻的结点,并且小 A 只会在偶数步(可以是零步)后结束漫步。

现在小 A 想知道,对于树上的每个结点,从这个结点出发开始漫步,经过偶数步能结束漫步的结点有多少个(可以经过重复的节点)。

【输入】

第一行,一个正整数 \(n\)

接下来 \(n−1\) 行,每行两个整数 \(u_i,v_i\),表示树上有⼀条连接结点 \(u_i\) 和结点 \(v_i\) 的边。

【输出】

一行,\(n\) 个整数。第 \(i\) 个整数表示从结点 \(i\) 出发开始漫步,能结束漫步的结点数量。

【输入样例】

3
1 3
2 3

【输出样例】

2 2 1

【算法标签】

《洛谷 P11962 书上漫步》 #二分图# #树的遍历# #GESP# #2025#

【代码详解】

#include <bits/stdc++.h>
using namespace std;const int N = 2e5 + 5;  // 定义最大节点数
int n, cnt;             // n: 节点数,cnt: 记录被标记的节点数
int h[N], e[N * 2], ne[N * 2], idx;  // 邻接表存储树结构
bool vis[N], a[N];      // vis: 记录节点是否访问过,a: 记录节点是否被标记// 添加边到邻接表
void add(int a, int b) {e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}// 深度优先搜索
void dfs(int u, int step) {if (vis[u]) return;  // 如果节点已访问,直接返回// 如果当前步数为偶数,标记该节点并增加计数if (step % 2 == 0) {a[u] = 1;cnt++;}vis[u] = 1;  // 标记节点为已访问// 遍历当前节点的所有邻居for (int i = h[u]; i != -1; i = ne[i]) {int j = e[i];dfs(j, step + 1);  // 递归访问邻居,步数加1}
}int main() {cin >> n;  // 输入节点数memset(h, -1, sizeof h);  // 初始化邻接表// 构建树的邻接表for (int i = 1; i < n; i++) {int x, y;cin >> x >> y;  // 输入边add(x, y), add(y, x);  // 无向图,添加双向边}dfs(1, 0);  // 从节点1开始DFS,初始步数为0// 输出结果for (int i = 1; i <= n; i++) {if (a[i]) cout << cnt << " ";  // 如果节点被标记,输出标记节点数else cout << n - cnt << " ";  // 否则输出未标记节点数}cout << endl;return 0;
}

【运行结果】

3
1 3
2 3
2 2 1 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1172797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode100天Day13-移除元素与多数元素

LeetCode100天Day13-移除元素与多数元素&#xff1a;双指针移除与排序计数 摘要&#xff1a;本文详细解析了LeetCode中两道经典数组题目——“移除元素"和"多数元素”。通过双指针实现原地移除元素&#xff0c;以及使用排序和计数查找多数元素&#xff0c;帮助读者掌…

2026年卷闸门厂家专业推荐榜:自动/车库/电动/不锈钢/快速卷闸门及工业门解决方案厂家精选 - 品牌推荐官

中国自动化工业门市场正经历着深刻变革,据行业报告显示,2025年中国市场规模已达到438.36亿元人民币,全球市场则接近2000亿元人民币,且预计将以年复合增长率超过9% 的速度持续增长。在这一庞大的市场中,卷闸门产品…

重磅福利,TRAE 国际版全部用户限免一个月!

前言好消息&#xff0c;TRAE 官方宣布为庆祝上线一周年 TRAE 国际版全部用户限免一个月&#xff01;即从 2026 年 1 月 14 日 10:00 起&#xff0c;TRAE 国际版全部用户赠送 Fast Request 权益&#xff08;不少于 1 个月 Pro 会员的用量&#xff09;&#xff01;Free 用户&…

智纺云ERP开发实战

基于Spring Boot React的纺织品ERP管理系统全栈开发实战 本文详细介绍了一个企业级纺织品ERP管理系统的完整开发过程,涵盖需求分析、技术选型、架构设计、核心功能实现等方面。该系统采用前后端分离架构,后端使用Spring Boot MyBatis MySQL,前端使用React Tailwind CSS,实现…

推荐几个不错的 Linux 服务器管理工具

前言选择一款好的 Linux 服务器管理工具能够极大地提高运维效率&#xff0c;保障业务连续性。今天大姚给大家分享3款不错的 Linux 服务器管理工具&#xff0c;希望可以帮助到有需要的同学。1Panel1Panel是新一代的 Linux 服务器运维管理面板&#xff0c;旨在通过现代化的 Web 界…

【算法题】堆

堆&#xff08;优先队列&#xff09;是一种基于完全二叉树的动态数据结构&#xff0c;核心特性是快速获取最值&#xff08;大根堆获取最大值&#xff0c;小根堆获取最小值&#xff09;&#xff0c;插入和删除操作的时间复杂度均为 O(log⁡n)O(\log n)O(logn)。它广泛应用于“动…

PasteEx:一款.NET开源的Windows快捷粘贴神器

前言PasteEx是一款.NET开源的用于增强 Windows 粘贴功能的小工具&#xff0c;它解决了将剪贴板内容保存为文件的繁琐步骤。无需打开记事本等应用&#xff0c;它可直接将文字、图片等内容粘贴到桌面上&#xff0c;极大提升了效率。功能特点自定义文本扩展规则&#xff1a;用户可…

2026年膏滋贴牌/拿货/定制/实力厂家推荐:湖北李时珍大健康源头工厂 - 品牌推荐官

在健康消费升级的浪潮下,膏滋类产品凭借其天然、便捷的特性,成为大健康市场的热门品类。据行业数据显示,2025年国内膏滋市场规模已突破120亿元,年复合增长率达18%,其中定制化、品牌化需求占比超65%。面对这一趋势…

《云计算到底是什么?IaaS/PaaS/SaaS 怎么分?一篇读懂不踩坑》

一、云计算&#xff1a;不止是技术&#xff0c;更是 IT 消费模式的革命 提到云计算&#xff0c;很多人会联想到 “把数据存到云上”&#xff0c;但这只是冰山一角。云计算的本质&#xff0c;是新技术与 IT 业务模式的双重创新—— 它通过技术将 IT 资源池化、服务化&#xff0…

C/C++访问MySQL数据库

C/C访问MySQL数据库 VS2019配置 第一步&#xff1a;打开mysql的安装目录&#xff0c;默认安装目录如下&#xff1a;C:\Program Files\MySQL\MySQL Server 8.0&#xff0c;确认 lib 目录和include 目录是否存在。 第二步&#xff1a;打开VS2019&#xff0c;新建一个空工程,控制台…

打工人学生党必看!Trilium Notes + cpolar,知识管理不被地点绑死

Trilium Notes 是一款主打结构化知识管理的开源笔记软件&#xff0c;支持树状层级组织笔记&#xff0c;可编辑富文本、Markdown、LaTeX 公式、Mermaid 流程图等内容&#xff0c;还具备全文检索、笔记加密、版本控制等功能&#xff0c;能适配不同人群的笔记整理需求&#xff0c;…

精选 4 款基于 C# 开源、实用的工具类库,开发效率提升利器!

前言 在我们日常工作开发中工具类库是软件开发中不可或缺的一部分&#xff0c;它们通过提供通用功能、实现代码复用、封装复杂逻辑、提升代码质量与可维护性&#xff0c;帮助开发者更高效、更稳定地构建软件应用程序。 今天大姚给大家分享 4 款基于 C# 开源、免费、实用的工具…

强烈安利专科生必看!10个AI论文网站深度测评

强烈安利专科生必看&#xff01;10个AI论文网站深度测评 2026年专科生必备的AI论文工具测评 随着人工智能技术的不断进步&#xff0c;越来越多的专科生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上琳琅满目的AI论文网站&#xff0c;如何选择真正适合自己需求的…

实测!旧手机秒变 Web 服务器,KSWEB+cpolar 摆脱局域网束缚

KSWEB 是一款专为安卓设备设计的 Web 服务器软件&#xff0c;它内置了 PHP、MySQL、Apache 等核心组件&#xff0c;无需繁琐的环境配置&#xff0c;就能让安卓手机变身 Web 服务器&#xff0c;支持部署 Typecho 这类轻量级博客系统&#xff0c;还附带 phpAdmin 工具方便管理数据…

2026年浊度仪优质厂家推荐排名,选择不用愁! - 工业品牌热点

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为工业自动化领域企业选型浊度仪提供客观依据,助力精准匹配适配的服务伙伴。 TOP1 推荐:杭州联测自动化技术有限公司 推荐指数:★★★★★ | 口碑…

GESP认证C++编程真题解析 | P11960 [GESP202503 五级] 平均分配

​欢迎大家订阅我的专栏&#xff1a;算法题解&#xff1a;C与Python实现&#xff01; 本专栏旨在帮助大家从基础到进阶 &#xff0c;逐步提升编程能力&#xff0c;助力信息学竞赛备战&#xff01; 专栏特色 1.经典算法练习&#xff1a;根据信息学竞赛大纲&#xff0c;精心挑选…

GESP认证C++编程真题解析 | P11961 [GESP202503 五级] 原根判断

​欢迎大家订阅我的专栏&#xff1a;算法题解&#xff1a;C与Python实现&#xff01; 本专栏旨在帮助大家从基础到进阶 &#xff0c;逐步提升编程能力&#xff0c;助力信息学竞赛备战&#xff01; 专栏特色 1.经典算法练习&#xff1a;根据信息学竞赛大纲&#xff0c;精心挑选…

springboot医疗器械预定小程序设计开发实现

开发背景医疗器械预定小程序基于SpringBoot的开发需求主要源于医疗行业数字化转型的迫切性。传统医疗器械采购流程存在效率低、信息不透明、管理困难等问题&#xff0c;而移动互联网技术的普及为优化这一流程提供了技术基础。行业痛点&#xff1a;医疗机构常面临器械库存不清、…

ssm自习室预约小程序的设计与实现

背景分析近年来&#xff0c;高校及公共学习场所的自习资源紧张问题日益突出&#xff0c;学生面临“占座难”“管理混乱”等痛点。传统人工登记方式效率低下&#xff0c;纸质签到易丢失数据&#xff0c;难以满足高峰时段的预约需求。数字化管理成为提升资源利用率的必然趋势。社…

上海装修设计选哪家?2026年优质公司精选,法式大平层设计/软装设计/奶油风房屋装修,上海装修设计团队推荐榜 - 品牌推荐师

随着上海城市化进程加速与居住品质升级,装修设计行业迎来结构性变革。消费者对设计落地性、环保标准、工程透明度及售后服务的要求持续提升,推动市场向专业化、精细化方向发展。据上海市室内装饰行业协会数据显示,2…