XJOI1571爱心蜗牛【树形动规】
爱心蜗牛
猫猫把嘴伸进池子里,正准备“吸”鱼吃,却听到门铃响了。猫猫擦了擦脸上的
水,打开门一看,那人正是她的好朋友——川川。
川川手里拿着一辆玩具汽车,对猫猫说:“这是我的新汽车!”接着,伴随一阵塑料
叩击声,玩具汽车的车门竟开了,一只蜗牛慢慢吞吞爬了出来。
“哇!这么大的蜗牛……”猫猫惊讶道。
“这是我的宠物蜗牛,他叫点点。”川川介绍道。
“把他送给我好吗?”猫猫央求道。
“可以让他陪你几天,但是不能送给你……”
点点沿着川川的身体,爬到了地上,又移到了猫猫的池子旁边,只听见猫猫向川川
介绍她的“创意吃鱼法 ”,心里不禁起了一丝凉意:“这个女生太毒了……吃鱼前还要玩
鱼……”转眼一看,池中的鱼依旧畅快地游来游去。
“或许这些鱼听不懂猫语吧……好在我会一点儿猫语,也会一点鱼语……阿弥陀
佛,善哉善哉。我还是救救这些鱼吧……”点点自言自语,一边费力地移动着身躯。他
认识到——单凭自己的力量,把猫猫的阴谋告诉每一条鱼,似乎不太可能——自己底盘
太低,走不快,看来只得想其他办法来传达信息。一翻认真思考之后,点点想到,如果
把猫猫的计划告诉其中一条鱼,再让鱼们互相传达消息,那么在相对较短的时间内,每
条鱼都会得知猫猫的计划。
鱼们的社会等级森严,除了国王菜鱼之外,每条鱼均有且只有一个直接上级,菜鱼则没
有上级。如果A 是B的上级,B 是的C上级,那么 A 就是的C上级。
绝对不会出现这样两条鱼A、B :A是的上级,B 也是的上级。
最开始的时刻是0,点点要做的,就只是用1 单位的时间把猫猫的阴谋告诉某一条
“信息源鱼”,让鱼们自行散布消息。在任意一个时间单位中,任何一条已经接到通知
的鱼,都可以把消息告诉他的一个直接上级或者直接下属。
现在,点点想知道:
1.到底需要多长时间,消息才能传遍池子里的鱼?
2.使消息传递过程消耗的时间最短,可供选择的“信息源鱼”有那些?
输入格式:
有多组输入数据,每组数据:
第一行有一个数N(N ≤1000 ),表示池中的鱼数,池鱼按照1到n编上了号码、国
王菜鱼的标号是1。
第2 行到第N 行(共N-1 行),每一行一个数,第I 行的数表示鱼I的直接上级的标号。
输出格式:
对于每组输入数据:
第一行有一个数,表示最后一条鱼接到通知的最早时间。
第二行有若干个数,表示可供选择的“信息源鱼”的标号,按照标号从小到大的顺序输出,中间用空格分开。
样例输入:
8 1 1 3 4 4 4 3
样例输出:
5 3 4 5 6 7
数据范围:
N ≤1000
时间限制:
1000
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
;
],des[N*],size=,ans[N],f[N];
bool vis[N];
inline void combine(int x,int y)
{
size++;
des[size]=y;
next[size]=first[x];
first[x]=size;
return;
}
inline bool cmp(int x,int y)
{
return x>y;
}
inline void dfs(int x)
{
];
vis[x]=;
;
for(int i=first[x];i;i=next[i]) if(!vis[des[i]])
{
dfs(des[i]);
rec[++sir]=f[des[i]];
}
) f[x]=;
sort(rec+,rec+sir+,cmp);
;i<=sir;i++) f[x]=max(f[x],rec[i]+i);
return;
}
int main()
{
int x,n;
scanf("%d",&n);
;i<=n;i++)
{
scanf("%d",&x);
combine(x,i);
combine(i,x);
}
,mi=,tmp;
;i<=n;i++)
{
memset(vis,,sizeof(vis));
memset(f,,sizeof(f));
dfs(i);
tmp=f[i];
if(tmp<mi)
{
mi=tmp;
s=;
ans[]=i;
}
else if(tmp==mi) ans[++s]=i;
}
printf("%d\n",mi);
;i<=s;i++) printf("%d ",ans[i]);
printf("\n");
;
}
XJOI1571爱心蜗牛【树形动规】的更多相关文章
- 【树形动规】HDU 5834 Magic boy Bi Luo with his excited tree
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5834 题目大意: 一棵N个点的有根树,每个节点有价值ci,每条树边有费用di,节点的值只能取一次,边 ...
- P2015 二叉苹果树 (树形动规)
题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点的编号来 ...
- [LUOGU1122] 最大子树和 - 树形动规
题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...
- 树形动规--没有上司的舞会--C++
题目来源:code[VS] 题目描述 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个 ...
- [SDOI2011]消耗战(虚树+树形动规)
虚树dp 虚树的主要思想: 不遍历没用的的节点以及没用的子树,从而使复杂度降低到\(\sum\limits k\)(k为询问的节点的总数). 所以怎么办: 只把询问节点和其LCA放入询问的数组中. 1 ...
- Tree with Small Distances(cf1029E)(树形动规)
You are given an undirected tree consisting of \(n\) vertices. An undirected tree is a connected und ...
- 洛谷 P2986 [USACO10MAR]伟大的奶牛聚集(树形动规)
题目描述 Bessie is planning the annual Great Cow Gathering for cows all across the country and, of cours ...
- 洛谷 P2899 [USACO08JAN]手机网络Cell Phone Network(树形动规)
题目描述 Farmer John has decided to give each of his cows a cell phone in hopes to encourage their socia ...
- P2014 选课 (树形动规)
题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门课有个学分,每门课有一 ...
随机推荐
- springMVC整合Junit4进行单元测试
springMVC整合Junit4进行单元测试 标签: springMVC整合Junit4junit单元测试教程springMVC入门教程 spring(10) 版权声明:本文为博主原创文章,未 ...
- SpringMVC:学习笔记(1)——理解MVC及快速入门
SprigMVC-理解MVC及快速入门 说明: 传统MVC-->JSPModel2-->Front Controller + Application Controller + Page C ...
- C++程序员的阅读清单
link:http://www.who1753.com/must-read-c-book-list/ 多读一些优秀的书籍,对于开发者稳固编程基础.提高编程技能有很大帮助.但是,大多时候,初学者不知道应 ...
- CSS 中的相对量
CSS 属性的浏览器兼容性,请查询 Can I Use. 已经被标准废弃(Deprecated)的属性,没有列出. 欢迎您与我一同完善这个清单,提供数据的读者姓名将在文中标注. (通过评论方式提供遗漏 ...
- BZOJ 3391: [Usaco2004 Dec]Tree Cutting网络破坏(搜索)
这道直接遍历一遍求出每个点的子节点数目就行了= = CODE: #include<cstdio>#include<iostream>#include<algorithm& ...
- 关于C语言中变量类型转换
今天在工作中遇到一个问题,而在解决问题的过程中,发现一段关于int 型变量(a)和char型(b)变量间类型转换的代码存在问题:一个值为255的int型变量a,强制类型转换并赋值给char型变量b后, ...
- 无需Get更多技能,快速打造一个可持久化的任务调度
项目总是很忙,忙里偷闲还是要总结一下,前一段时间,由于项目中需要,我们需要很多定时汇总数据的情况,项目初期主要使用sql server 计划任务实现对数据的汇总与统计,但是开发到一定时间内,需求提出了 ...
- 【android】简易实现横向的ListView
众所周知,android里面的ListView是竖着的. 如果想要横向的话需要自定义一下ListView. CSDN上面有个人描述了一下一个国外大神的自定义横向ListVIew 请点击 --> ...
- Lucas,.net Web框架
#LucasLucasLucasWeb框架是基于新的魔法糖思想创建的框架.本框架有两大特点.1.所有框架里最简单易学易配置的.2.所有框架里效率最快的.1.UrlRouter没有使用IOC注入及反射, ...
- 做了个新的UWP类库 Sharp2D
C#开发UWP的时候如果要实现高斯模糊效果的话,最好的选择似乎是微软的Win2D 但是Win2D太过庞大了,仅仅是庞大其实也没啥问题,毕竟net core就很庞大,但Win2d是一个Winmd组件 w ...