洛谷P2279 [HNOI2003]消防局的设立(深搜,贪心)
来源:互联网 发布:本泽马 知乎 编辑:程序博客网 时间:2024/05/20 08:41
洛谷P2279 [HNOI2003]消防局的设立(深搜,贪心)
题目描述
2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地。起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了一个巨大的树状结构。如果基地A到基地B至少要经过d条道路的话,我们称基地A到基地B的距离为d。由于火星上非常干燥,经常引发火灾,人类决定在火星上修建若干个消防局。消防局只能修建在基地里,每个消防局有能力扑灭与它距离不超过2的基地的火灾。
你的任务是计算至少要修建多少个消防局才能够确保火星上所有的基地在发生火灾时,消防队有能力及时扑灭火灾。
输入输出格式
输入格式:
输入文件的第一行为n (n<=1000),表示火星上基地的数目。接下来的n-1行每行有一个正整数,其中文件第i行的正整数为a[i],表示从编号为i的基地到编号为a[i]的基地之间有一条道路,为了更加简洁的描述树状结构的基地群,有a[i]<i。输出格式:
输出文件仅有一个正整数,表示至少要设立多少个消防局才有能力及时扑灭任何基地发生的火灾。输入输出样例
输入样例#1:
61
2
3
4
5
输出样例#1:
2解题分析
以1为根节点,依次从深度较大的结点出发,采用贪心算法。步骤:
1、从结点1出发,进行深搜,确定每一个结点的深度,并由此确定每一个结点的父节点和爷结点,其中结点1的根节点为1。
2、按深度从小到达对结点进行排序。
3、按照上述顺序,搜索当前还没有染色的结点,将其爷结点建一个消防局(结果加1),并将离该结点距离为不大于2的结点染色。
4、直到所有结点都染色。
小坑:输入时,第一条道路的起点为2,第二条道路的起点为3,......
#include#include #include #include #include #include #include #include using namespace std;#define N 1002int n, head[N], tot = 0, used[N]= {0};struct node { int to; int next; node():next(-1) { }} e[2*N];struct node1 { int index; int dep; int parent; int gf; node1():parent(0) { } void set(int i, int d, int p) { index = i; dep = d; parent = p; }} depth[N];void get_i(int &x) { char ch = getchar(); x = 0; while(!isdigit(ch)) ch = getchar(); while(isdigit(ch)) { x = x * 10 + ch - '0'; ch = getchar(); }}void add_e(int from, int to) { e[tot].to = to; e[tot].next = head[from]; head[from] = tot++;}bool cmp(node1 n1, node1 n2) { return n1.dep > n2.dep;}void dfs(int from, int dep) { int i, to; used[from] = 1; for(i=head[from]; ~i; i=e[i].next) { to = e[i].to; if(used[to]) continue; depth[to].set(to, dep+1, from); dfs(to, dep+1); }}void change(int k) { int i, to; queue q; for(i=head[k]; ~i; i=e[i].next) { // 与k的距离等于1的结点染色 to = e[i].to; used[to] = 1; q.push(to); } while(!q.empty()) {// 与k的距离等于2的结点染色 to = q.front(); q.pop(); for(i=head[to]; ~i; i=e[i].next) used[e[i].to] = 1; }}int main() { ios::sync_with_stdio(false); int i, to, gf, ans = 0; memset(head, -1, sizeof(head)); get_i(n); for(i=1; i
阅读全文
0 0
- 洛谷P2279 [HNOI2003]消防局的设立(深搜,贪心)
- 洛谷 P2279 [HNOI2003]消防局的设立
- 洛谷 P2279 [HNOI2003]消防局的设立
- 洛谷 P2279 [HNOI2003]消防局的设立
- 洛谷 P2279 [HNOI2003]消防局的设立
- 洛谷 P2279 [HNOI2003]消防局的设立
- P2279 [HNOI2003]消防局的设立
- P2279 [HNOI2003]消防局的设立
- bzoj1217: [HNOI2003]消防局的设立(贪心)
- bzoj1217(洛谷P2279)消防局的设立(dp或贪心)
- 洛谷 2279 [HNOI2003] 消防局的设立 贪心+dfs
- 【BZOJ 1217】[HNOI2003]消防局的设立(贪心)
- 【bzoj 1217】[HNOI2003]消防局的设立 贪心
- BZOJ 1217: [HNOI2003]消防局的设立 贪心
- 【bzoj1217】[HNOI2003]消防局的设立 贪心
- [HNOI2003]消防局的设立
- bzoj1217: [HNOI2003]消防局的设立
- bzoj1217: [HNOI2003]消防局的设立
- 剑指offer:数组中只出现一次的数字
- Ubuntu 17.04系统中使用QtCreator构建OpenCV测试工程
- 发行版本的区别(POST)
- TFS映射时工作区存在报错的解决办法(三)
- Zookeeper详解
- 洛谷P2279 [HNOI2003]消防局的设立(深搜,贪心)
- 如何修改Tomcat的8080端口号!
- MySQL数据库设计架构使用规范(其他数据库也使用)
- Linux_0_编译链接
- Faster_rcnn::loadnet
- nlogn 的最长上升子序列
- 由点名软件衍生出的一些小想法
- Node.js queryString模块
- VS2008发布网站时,生成固定命名的程序集(一)
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
飞鱼歌曲
打飞鸡
飞鸡
锦鸡会飞吗
鸡会飞吗
鸡飞
重回五零鸡飞
小飞鹰磨豆机
黑小飞
小黑飞
从人造飞剑开始的黑科技
月黑雁飞高全诗
塞下曲月黑雁飞高古诗
黑飞
玉面小飞龙
小飞龙国语
九叔开山大弟子 神勇小飞龙
小食代
散装小零食批发网
膨化小食品
食品安全小常识100条
食品小生意
食品安全小知识
小学生食品安全小建议20字
小食品批发网
进口小食品
小食品经营许可证
小食品有哪些
小东北食品有限公司
零食多休闲食品
小食品批发市场
小食品大全
小食品加工
休闲食品品牌排行
清真小食品
干货休闲食品批发
健康小食品
小食品厂
超市休闲食品
小食品店
小食品加工作坊