【洛谷P2279】[HNOI2003]消防局的设立
消防局的设立
题目链接
贪心:每次取出深度最大的节点,若没有被覆盖到,要想覆盖它,
最优的做法显然是将它的爷爷设为消防局
(因为该节点深度为最大,选兄弟、父亲所覆盖的节点,选了爷爷后都能够覆盖)
用优先队列维护深度即可
#include<iostream> #include<cstring> #include<cstdio> #include<queue> using namespace std; #define INF 100000 #define N 1010 int n,Head[N],num,ans,fa[N]; int ok[N],deep[N],vis[N]; struct cmp{bool operator ()(int a,int b){return deep[a]<deep[b];} }; struct NODE{int to,next; } e[N<<1]; priority_queue< int, vector<int>, cmp > q; inline int read(){int x=0; char c=getchar();while(c<'0'||c>'9') c=getchar();while('0'<=c&&c<='9') { x=(x<<3)+(x<<1)+c-'0'; c=getchar(); }return x; } inline void add(int x,int y){e[++num].to=y;e[num].next=Head[x];Head[x]=num; } void dfs(int t,int f){fa[t]=f;deep[t]=deep[f]+1;for(int i=Head[t];i;i=e[i].next)if(e[i].to!=f) dfs(e[i].to,t); } void dfs2(int t,int dep){if(dep==2) return;for(int i=Head[t];i;i=e[i].next){int v=e[i].to;vis[v]=1;dfs2(v,dep+1);} } int main() {n=read(); int x;for(int i=2;i<=n;i++){x=read();add(i,x); add(x,i);}dfs(1,-1);for(int i=1;i<=n;i++) q.push(i);int u,gf;while(!q.empty()){u=q.top(); q.pop();if(vis[u]) continue;ans++;if(fa[u]!=-1)if(fa[fa[u]]!=-1)gf=fa[fa[u]];else gf=fa[u];else gf=u;vis[gf]=1;dfs2(gf,0);}printf("%d\n",ans);return 0; }
转载于:https://www.cnblogs.com/yjkhhh/p/9415841.html
【洛谷P2279】[HNOI2003]消防局的设立相关推荐
- BZOJ1217: [HNOI2003]消防局的设立
BZOJ1217: [HNOI2003]消防局的设立 Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地. 起初为了节约材料,人类只修建了n-1条道路来连接这些基地 ...
- bzoj 1217 [HNOI2003]消防局的设立 贪心
[HNOI2003]消防局的设立 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 908 Solved: 531 [Submit][Status][ ...
- [HNOI2003] 消防局的设立
经典题,但还是想写一篇完整而又详细美观的题解. 本文含有贪心及 dp 的做法,适合所有语言人群阅读. 1Perface\Large\textbf{1 Perface}1 Perface 本题的 424 ...
- 【bzoj1217】[HNOI2003]消防局的设立 贪心
[HNOI2003]消防局的设立 Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能 ...
- [HNOI2003]消防局的设立(贪心)
链接:https://ac.nowcoder.com/acm/problem/20031 来源:牛客网 题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类 ...
- [Luogu2279][HNOI2003] 消防局的设立
文章目录 题目 法一:树上DP 思路 代码实现 法二:贪心 + 搜索 思路 代码实现 题目 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来 ...
- bzoj1217: [HNOI2003]消防局的设立 [树形dp]
Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了 ...
- 洛谷P2280 [HNOI2003]激光炸弹
题目描述 输入输出格式 输入格式: 输入文件名为input.txt 输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示 xi,yi ,vi . 输出格式: 输出文件名为out ...
- 对于洛谷提高试炼场-动态规划篇的爆破
题外话 由于本蒟蒻的动态规划实在是太弱啦,所以有必要爆破一下洛谷提高试炼场.里面有很多非常好,难度也合适的动态规划题--(然而你还是抄了不少题解) niconiconi~让我们一起开始爆破吧. lv- ...
最新文章
- 一阵骚操作,我把SQL执行效率提高了10000000倍!
- 微信内测版抢先体验,可发 4K 无损视频
- 【数理知识】《数值分析》李庆扬老师-第9章-常微分方程初值问题数值解法
- android studio 3.0设置字体
- 合并单链表,输出单链表中间元素,判断是否有环等
- AE鱼眼镜头畸变扭曲修复插件RevisionFX RELens for Mac
- 揭开 Facebook Growth Hacking 的神秘面纱,微信、人人为何都在效仿?
- 共享文件服务器密码更换,服务器共享文件密码
- PowerDesigner数据库设计PDM基于Excel的导入导出总结
- 如何在 Mac 上的调度中心中查看打开的窗口和空间?
- FishC笔记—18 讲 函数:灵活即强大
- Hive调优全方位指南(推荐收藏)
- 夺灵者哈卡(Hakkar, the Soulflayer)
- html5字体加粗斜体,font设置字体加粗
- Halcon算子实现——Texture_Laws
- PyTorch的参数固定以及detach clone
- opening V4L
- 阿里云服务器远程连接和v2ray
- MFC中使用OpenCasCade示例
- 100Mhz秒脉冲发生器 vivado
热门文章
- 黑鲨helo支持html吗,黑鲨游戏手机Helo综合评测 到底值不值得买
- AtCoder Beginner Contest 171 A - αlphabet
- 如何在Windows环境下使用PyCharm开发PySpark
- GO语言学习之路20
- Chrome DevTools
- /dev/mapper/centos-root 100% 虚拟机硬盘空间占满
- 小前端眼里的大前端:GMTC 2018 参会小结
- DZY Loves Graph
- VS2010打开项目时弹出错误提示。。。VisualStudio\10.0\ActivityLog.
- XBRL 可扩展商业报告语言