news 2026/6/10 16:01:54

算法竞赛备考冲刺必刷题(C++) | 洛谷 P9304 「DTOI-5」3-1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法竞赛备考冲刺必刷题(C++) | 洛谷 P9304 「DTOI-5」3-1

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

洛谷:P9304 「DTOI-5」3-1 - 洛谷

【题目描述】

里克在视线可及的范围内发现了一颗古老的「神树」。

神树是一颗树,树上有n nn个含有魔法装置的位置。经过初步「考察」,有n − 1 n - 1n1条魔法连接,第i ( 1 ≤ i ≤ n − 1 ) i(1 \leq i \leq n - 1)i(1in1)条连接u i , v i u_i, v_iui,vi两个魔法装置,保证u i ≠ v i u_i \neq v_iui=vi1 ≤ u i , v i ≤ n 1\leq u_i,v_i\leq n1ui,vin。这两个装置可以相互双向地1 11单位时间内通行,保证仅由这n − 1 n - 1n1条连接,每个魔法装置都可以相互到达。

此外,有n − 1 n - 1n1条特殊连接,对于每个魔法装置i ∈ [ 2 , n ] i \in [2, n]i[2,n],可以瞬间传送到第1 11个魔法装置,花费0 00单位时间。特殊连接总共只能使用一次

里克初始在魔法装置1 11处。现在,给出这棵「神树」的结构,里克想要在若干时间内研究尽可能多的魔法装置。我们假定,研究一个魔法装置只需要到达该装置处,并且不需要花费额外时间。

里克想让你尽快计算出,对所有k ∈ [ 1 , n ] k \in [1, n]k[1,n],如果要恰好研究k kk个不同的魔法装置,并且随之返回魔法装置1 \bm 11,最少应花费多少时间。

【输入】

第一行,一个整数n nn

接下来n − 1 n - 1n1行,每行两个整数u i , v i u_i, v_iui,vi

【输出】

n nn行,第i ii行一个整数表示k = i k = ik=i的答案。

【输入样例】

5 1 2 1 3 2 4 2 5

【输出样例】

0 1 2 4 6

【算法标签】

《洛谷 P9304 「DTOI-5」3-1》 #树形数据结构# #深度优先搜索DFS# #树的遍历# #O2优化#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=100005,M=N*2;// 定义常量,N: 最大节点数,M: 最大边数(无向图)intn,u,v,dep[N],maxx,ans;// n: 节点数, dep: 深度数组, maxx: 最大深度, ans: 答案inth[N],e[M],ne[M],idx;// 邻接表存储树// 添加无向边voidadd(inta,intb){e[idx]=b,ne[idx]=h[a],h[a]=idx++;// 添加边a->b}// DFS计算节点深度voiddfs(intu,intfa)// u: 当前节点, fa: 父节点{if(fa)// 如果不是根节点{dep[u]=dep[fa]+1;// 当前节点深度 = 父节点深度 + 1maxx=max(maxx,dep[u]);// 更新最大深度}for(inti=h[u];i!=-1;i=ne[i])// 遍历当前节点的所有邻接点{intj=e[i];// 邻接节点jif(j==fa)continue;// 如果是父节点,跳过dfs(j,u);// 递归遍历子节点}}intmain(){memset(h,-1,sizeof(h));// 初始化邻接表cin>>n;// 输入节点数// 输入n-1条边,构建树for(inti=1;i<n;i++){cin>>u>>v;add(u,v),add(v,u);// 添加无向边}// 从节点1开始DFS,计算每个节点的深度和树的最大深度dfs(1,0);// 对于每个可能的i值,计算答案for(inti=1;i<=n;i++){ans=2*(i-1)-min((i-1),maxx);cout<<ans<<endl;}return0;}

【运行结果】

5 1 2 1 3 2 4 2 5 0 1 2 4 6
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:31:05

UniApp 横向可滚动 Tab 组件开发详解

一、组件概述 这是一个高度可定制、支持横向滚动的标签页&#xff08;Tab&#xff09;组件&#xff0c;主要用于在有限宽度的移动端展示多个标签项。组件具有以下核心特性&#xff1a; 横向滚动&#xff1a;当标签数量超出容器宽度时支持横向滚动自动居中&#xff1a;选中标签自…

作者头像 李华
网站建设 2026/6/4 20:49:05

基于单片机酒精浓度测试仪设计

基于单片机的酒精浓度测试仪设计 一、系统设计背景与意义 传统酒精检测设备存在明显局限&#xff1a;警用呼气式酒精检测仪精度高但成本昂贵&#xff08;数千元&#xff09;&#xff0c;难以普及到家庭、企业等场景&#xff1b;普通酒精传感器模块仅能输出模拟信号&#xff0c;…

作者头像 李华
网站建设 2026/5/29 8:48:24

上海AI实验室推出:让AI真正理解“时间流逝“的图像生成基准测试

这项由上海人工智能实验室的田俊曦、李思远、贺聪慧、吴立军、谭诚团队完成的重要研究&#xff0c;发表于2025年12月2日的预印本论文平台arXiv上&#xff0c;论文编号为2512.01816v1。有兴趣深入了解的读者可以通过该编号查询完整的研究资料。当我们观看一部电影时&#xff0c;…

作者头像 李华
网站建设 2026/6/9 20:02:00

Vue3-04 自定义组件Person

文章目录创建目录components写样式注册组件插件: Vue.js devtools调用组件在Vue3中可以使用Vue2语法问题答疑创建目录components 创建Vue文件 写样式 注册组件 components: {Person} # 控制台的Vue插件 来源:极简插件 插件: Vue.js devtools 具体安装步骤 调用组件 在Vue3中…

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

治愈系水流音效合集!从溪流到海浪满足所有场景需求

水流的声音&#xff0c;是自然界最纯净的白噪音&#xff0c;也是最易得的心理疗愈师。一段清澈的溪流声&#xff0c;能冲刷掉大脑中的纷扰&#xff1b;一阵稳定的海浪&#xff0c;能抚平情绪的褶皱。你是否在制作冥想引导音频、治愈系短片、或仅仅是想为自己寻找一段能带来深度…

作者头像 李华
网站建设 2026/6/10 13:45:24

如何将文件一键转二维码?文件生成二维码指南

在数字化办公与信息分享场景中&#xff0c;文件传输的便捷性至关重要。无论是需要分享的会议文档、产品说明书&#xff0c;还是个人作品集、学习资料&#xff0c;将文件生成二维码&#xff0c;只需轻轻一扫就能实现查看与下载&#xff0c;无疑大幅提升了效率。无需复杂的技术操…

作者头像 李华