当前位置: 首页 > news >正文

题解:洛谷 P1670 [USACO04DEC] Tree Cutting S

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

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

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


【题目来源】

洛谷:P1670 [USACO04DEC] Tree Cutting S - 洛谷

【题目描述】

约翰意识到贝茜建设网络花费了他巨额的经费,就把她解雇了。贝茜很愤怒,打算狠狠报复。她打算破坏刚建成的约翰的网络。约翰的网络是树形的,连接着N NN个牛棚。她打算切断某一个牛棚的电源,使和这个牛棚相连的所有电缆全部中断。之后,就会存在若干子网络。为保证破坏够大,每一个子网的牛棚数不得超过总牛棚数的一半,那哪些牛棚值得破坏呢?

【输入】

1 11行:一个整数N NN

2 22N NN行:每行输入两个整数,表示一条电缆的两个端点。

【输出】

按从小到大的顺序,输出所有值得破坏的牛棚。如果没有一个值得破坏,就输出NONE

【输入样例】

10 1 2 2 3 3 4 4 5 6 7 7 8 8 9 9 10 3 8

【输出样例】

3 8

【算法标签】

#普及 #树形DP

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=10005,M=N*2;intn;// n: 节点数inth[N],e[M],ne[M],idx;// 邻接表存储树intsiz[N],maxP[N];// siz: 子树大小,maxP: 最大子树大小boolok[N],flag;// ok: 标记节点是否是重心,flag: 标记是否有重心voidadd(inta,intb){e[idx]=b,ne[idx]=h[a],h[a]=idx++;}// 第一次DFS,计算每个节点的子树大小voiddfs_1(intu,intfa){siz[u]=1;// 初始化子树大小为1(自身)for(inti=h[u];i!=-1;i=ne[i])// 遍历u的所有子节点{intv=e[i];// 子节点vif(v==fa)// 跳过父节点continue;dfs_1(v,u);// 递归计算子节点的子树大小siz[u]+=siz[v];// 累加子节点的子树大小}}// 第二次DFS,计算每个节点的最大子树大小,并判断是否是重心voiddfs_2(intu,intfa){maxP[u]=n-siz[u];// 考虑u的父节点方向的子树大小for(inti=h[u];i!=-1;i=ne[i])// 遍历u的所有子节点{intv=e[i];// 子节点vif(v==fa)// 跳过父节点continue;dfs_2(v,u);// 递归计算子节点的最大子树大小maxP[u]=max(maxP[u],siz[v]);// 更新最大子树大小}if(maxP[u]<=n/2)// 如果最大子树大小不超过n/2,则是重心ok[u]=true;}intmain(){cin>>n;// 输入节点数memset(h,-1,sizeof(h));// 初始化邻接表for(inti=1;i<n;i++)// 输入n-1条边{intu,v;cin>>u>>v;add(u,v),add(v,u);// 添加无向边}dfs_1(1,0);// 第一次DFS,计算子树大小dfs_2(1,0);// 第二次DFS,判断重心for(inti=1;i<=n;i++)// 遍历所有节点if(ok[i])// 如果节点i是重心{cout<<i<<endl;// 输出重心编号flag=true;// 标记有重心}if(!flag)// 如果没有找到重心cout<<"NONE"<<endl;// 输出NONEreturn0;}

【运行结果】

10 1 2 2 3 3 4 4 5 6 7 7 8 8 9 9 10 3 8 3 8
http://www.gsyq.cn/news/1342125.html

相关文章:

  • 2026年5月兰州装修设计质量排行:兰州装饰公司、兰州本地装修公司、兰州装修公司、兰州装修工作室、兰州装修设计公司选择指南 - 优质品牌商家
  • WebStorm 保存文件时自动格式化失败报错怎么修复?
  • Unity哥特UI资源包:SDF字体与Shader Graph工程化实践
  • Pandas 核心操作指南:索引、筛选、赋值与函数应用
  • UPGEN Lighting HDRP:HDRP光照优化与自动化配置方案
  • HDRP光照性能优化:探针体内存、阴影贴图与反射烘焙的底层控制
  • SpaceX启动纳斯达克IPO,1.75万亿美元市值目标能否实现?
  • pytest Code Review skill.md
  • 线程池:从Executors到自定义线程池的设计权衡
  • Unity游戏配置管线实战:Luban Schema与Data分离设计
  • Angular Signal Forms:以状态为先,革新表单验证、UI 更新与状态管理
  • Kali Linux虚拟机安装避坑指南:镜像校验、VMware配置与黑屏排错
  • Frida启动失败根因分析:SELinux与ptrace_scope深度解析
  • C语言内联函数与宏的深度解析:选型决策与实战避坑指南
  • 2026年4月热门的冷库直销厂家推荐,保鲜库/冷冻库/冷藏库/冷库/大型冷库/防爆冷库/组合式冷库,冷库企业哪家强 - 品牌推荐师
  • Midjourney包豪斯风格生成失效真相(2024最新版失效模式白皮书)
  • UE5插件选型避坑指南:耦合深度、版本适配与调试可见性
  • 为什么你的双色调总像PPT?揭秘Midjourney v6中未公开的--tint权重衰减算法与Gamma校准阈值
  • RK3576嵌入式多模态大模型部署:从模型转换到边缘图像理解实战
  • Burp Suite混合加密流量解密实战:JS+Native加解密链路还原
  • 2026成都保鲜冰袋厂家怎么选:成都环保吸塑包装、成都生物冰袋厂、成都食品级吸塑盒、环保吸塑包装、生物冰袋厂、食品级吸塑盒选择指南 - 优质品牌商家
  • JMeter接口断言实战:从响应匹配到业务逻辑校验
  • WebSocket压测实战:从协议原理到高并发稳定性验证
  • Open MCT性能测试实战:JMeter多协议分层压测方法
  • Modbus协议详解:从RTU、ASCII到TCP的工业通信实战指南
  • ElevenLabs最新V3声库实测对比:Stability、Clarity、Emotion三大维度量化打分,仅2款支持实时低延迟流式合成(附Benchmark原始数据)
  • 2026深圳公司注册资本5年实缴新规全解读及合规指南:2026年深圳代理记账报税多少钱、2026年深圳注册公司全流程及费用选择指南 - 优质品牌商家
  • nanoWatt XLP超低功耗单片机技术解析与应用实战
  • LeetCode 42:接雨水问题 | 双指针法与动态规划详解
  • 2026国内绝缘与屏蔽膜核心供应商名录:防火隔热膜、高强度尼龙布、高阻燃尼龙布、BC组件防水封装膜、CCS封装膜选择指南 - 优质品牌商家