消防局的设立

题目链接

贪心:每次取出深度最大的节点,若没有被覆盖到,要想覆盖它,

最优的做法显然是将它的爷爷设为消防局

(因为该节点深度为最大,选兄弟、父亲所覆盖的节点,选了爷爷后都能够覆盖)

用优先队列维护深度即可

#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]消防局的设立相关推荐

  1. BZOJ1217: [HNOI2003]消防局的设立

    BZOJ1217: [HNOI2003]消防局的设立 Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地. 起初为了节约材料,人类只修建了n-1条道路来连接这些基地 ...

  2. bzoj 1217 [HNOI2003]消防局的设立 贪心

    [HNOI2003]消防局的设立 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 908  Solved: 531 [Submit][Status][ ...

  3. [HNOI2003] 消防局的设立

    经典题,但还是想写一篇完整而又详细美观的题解. 本文含有贪心及 dp 的做法,适合所有语言人群阅读. 1Perface\Large\textbf{1 Perface}1 Perface 本题的 424 ...

  4. 【bzoj1217】[HNOI2003]消防局的设立 贪心

    [HNOI2003]消防局的设立  Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能 ...

  5. [HNOI2003]消防局的设立(贪心)

    链接:https://ac.nowcoder.com/acm/problem/20031 来源:牛客网 题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类 ...

  6. [Luogu2279][HNOI2003] 消防局的设立

    文章目录 题目 法一:树上DP 思路 代码实现 法二:贪心 + 搜索 思路 代码实现 题目 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来 ...

  7. bzoj1217: [HNOI2003]消防局的设立 [树形dp]

    Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了 ...

  8. 洛谷P2280 [HNOI2003]激光炸弹

    题目描述 输入输出格式 输入格式: 输入文件名为input.txt 输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示 xi,yi ,vi . 输出格式: 输出文件名为out ...

  9. 对于洛谷提高试炼场-动态规划篇的爆破

    题外话 由于本蒟蒻的动态规划实在是太弱啦,所以有必要爆破一下洛谷提高试炼场.里面有很多非常好,难度也合适的动态规划题--(然而你还是抄了不少题解) niconiconi~让我们一起开始爆破吧. lv- ...

最新文章

  1. 一阵骚操作,我把SQL执行效率提高了10000000倍!
  2. 微信内测版抢先体验,可发 4K 无损视频
  3. 【数理知识】《数值分析》李庆扬老师-第9章-常微分方程初值问题数值解法
  4. android studio 3.0设置字体
  5. 合并单链表,输出单链表中间元素,判断是否有环等
  6. AE鱼眼镜头畸变扭曲修复插件RevisionFX RELens for Mac
  7. 揭开 Facebook Growth Hacking 的神秘面纱,微信、人人为何都在效仿?
  8. 共享文件服务器密码更换,服务器共享文件密码
  9. PowerDesigner数据库设计PDM基于Excel的导入导出总结
  10. 如何在 Mac 上的调度中心中查看打开的窗口和空间?
  11. FishC笔记—18 讲 函数:灵活即强大
  12. Hive调优全方位指南(推荐收藏)
  13. 夺灵者哈卡(Hakkar, the Soulflayer)
  14. html5字体加粗斜体,font设置字体加粗
  15. Halcon算子实现——Texture_Laws
  16. PyTorch的参数固定以及detach clone
  17. opening V4L
  18. 阿里云服务器远程连接和v2ray
  19. MFC中使用OpenCasCade示例
  20. 100Mhz秒脉冲发生器 vivado

热门文章

  1. 黑鲨helo支持html吗,黑鲨游戏手机Helo综合评测 到底值不值得买
  2. AtCoder Beginner Contest 171 A - αlphabet
  3. 如何在Windows环境下使用PyCharm开发PySpark
  4. GO语言学习之路20
  5. Chrome DevTools
  6. /dev/mapper/centos-root 100% 虚拟机硬盘空间占满
  7. 小前端眼里的大前端:GMTC 2018 参会小结
  8. DZY Loves Graph
  9. VS2010打开项目时弹出错误提示。。。VisualStudio\10.0\ActivityLog.
  10. XBRL 可扩展商业报告语言