当前位置: 首页 > 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.jsqmd.com/news/861623/

相关文章:

  • Unity配置管理实战:Luban实现Excel到C#类型安全配置
  • B站成分检测器:揭秘评论区背后的用户画像,3分钟开启智能社交分析
  • PHP版本升级不是换镜像:漏洞修复中的兼容性实战指南
  • 基于CC2530 ZigBee的智慧农业控制系统:从硬件设计到低功耗组网实战
  • Godot内存泄漏三大根源与自动化防治方案
  • 2025降AI工具测评:10款实测软件附免费方案
  • Chromium沙箱机制与GPU进程安全实践指南
  • 2026耐高温涂料技术解析:户外工程防腐涂料、无毒油漆、无毒饮水舱油漆、无毒饮水舱涂料、无溶剂环氧涂料、机场钢结构防腐涂料选择指南 - 优质品牌商家
  • WebStorm 保存文件时自动格式化失败报错怎么修复?
  • Pandas 核心操作指南:索引、筛选、赋值与函数应用
  • GGUF支持Llama-4无损量化教程
  • 2026年热门的分散印染印花助剂定制加工厂家推荐 - 品牌宣传支持者
  • 2026年临沂成人高考报名机构选择实操指南:中宏教育联系、临沂老牌函授站、临沂非脱产、国家开放大学函授站、山东学历提升选择指南 - 优质品牌商家
  • WebSocket压测实战:从协议原理到高并发稳定性验证
  • RT-Trace升级:集成GDB Server与一键烧录,打造嵌入式开发调试平台
  • PHP版本漏洞修复:从运行时依赖分析到四路径修复
  • WordPress Breeze插件RCE漏洞CVE-2026-3844深度分析与四层防护
  • JMeter接口断言实战:从响应匹配到业务逻辑校验
  • 2026宜宾道闸安装厂家怎么选:宜宾门禁道闸安装、宜宾门禁道闸批发、宜宾门禁道闸电话、广告道闸、智能道闸、栅栏道闸选择指南 - 优质品牌商家
  • 2026年现阶段,平谷区汽车内饰深度清洁与翻新服务专业指南 - 2026年企业推荐榜
  • CSS 布局与渲染性能
  • 线程池:从Executors到自定义线程池的设计权衡
  • C语言内联函数与宏的深度解析:性能、安全与工程实践
  • 从安全左移到DevSecOps:构建嵌入式系统应用程序安全(AppSec)的完整实践指南
  • 2026乐山临江鳝丝店推荐:乐山临江鳝丝哪家正宗、乐山临江鳝丝推荐品牌、乐山临江鳝丝电话、乐山临江鳝丝订餐热线选择指南 - 优质品牌商家
  • Frida启动失败根因分析:SELinux与ptrace_scope深度解析
  • C语言内联函数与宏的深度解析:选型决策与实战避坑指南
  • 2026年4月热门的冷库直销厂家推荐,保鲜库/冷冻库/冷藏库/冷库/大型冷库/防爆冷库/组合式冷库,冷库企业哪家强 - 品牌推荐师
  • RAG落地失败?别怪技术,这5个“看不见”的坑才是拦路虎!揭秘提升效率与准确率的秘诀
  • JMeter断言实战:从误配到分层校验的避坑指南