消息传递(news)题解
代码
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 200000;
int f[N + 5] , g[N + 5] , h[N + 5] , son[N + 5] , res[N + 5] , Maxl[N + 5] , Maxr[N + 5];
int tot = 1 , cnt , n , F , ans;
struct edge{
int to , nxt;
}e[N + 5];
inline void add(int x , int y) {e[++tot].to = y , e[tot].nxt = h[x] , h[x] = tot;}
inline int o(int x){return x == F ? g[x] : f[x];}
inline bool cmp(int x , int y) {return o(x) > o(y);}
inline void getf(int u)
{
for(register int i = h[u]; i; i = e[i].nxt) getf(e[i].to);
cnt = F = 0;
for(register int i = h[u]; i; i = e[i].nxt) son[++cnt] = e[i].to;
sort(son + 1 , son + cnt + 1 , cmp);
for(register int i = 1; i <= cnt; i++) f[u] = max(f[u] , f[son[i]] + i);
}
inline void getg(int u)
{
if (u > 1) son[cnt = 1] = F = u;
else cnt = F = 0;
for(register int i = h[u]; i; i = e[i].nxt) son[++cnt] = e[i].to;
sort(son + 1 , son + cnt + 1 , cmp);
Maxl[0] = Maxr[cnt + 1] = 0;
for(register int i = 1; i <= cnt; i++) Maxl[i] = max(Maxl[i - 1] , o(son[i]) + i);
for(register int i = cnt; i >= 1; i--) Maxr[i] = max(Maxr[i + 1] , o(son[i]) + i);
for(register int i = 1; i <= cnt; i++)
{
if (son[i] == u) continue;
g[son[i]] = max(Maxl[i - 1] , Maxr[i + 1] - 1);
}
res[u] = Maxl[cnt];
for(register int i = h[u]; i; i = e[i].nxt) getg(e[i].to);
}
inline int read()
{
char ch = getchar();
int x = 0;
for(; ch < '0' || ch > '9'; ch = getchar());
for(; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
return x;
}
int main()
{
freopen("news.in" , "r" , stdin);
freopen("news.out" , "w" , stdout);
n = read();
int fa;
for(register int i = 2; i <= n; i++) fa = read() , add(fa , i);
getf(1) , getg(1);
ans = 2e9;
for(register int i = 1; i <= n; i++) ans = min(res[i] , ans);
printf("%d\n" , ans + 1);
for(register int i = 1; i <= n; i++)
if (res[i] == ans) printf("%d " , i);
}
消息传递(news)题解的更多相关文章
- CCF-CSP题解 201903-4 消息传递接口
求并行的各个进程,且进程内部顺序执行的情况下,会不会出现"死锁". 首先用\(%[^\n]\)将每个进程读入.最后过不了居然是因为\(str[\ ]\)开小了(悲喜交加.存储在\( ...
- 洛谷 P2018 消息传递 题解
题面 总体来说是一道从下往上的DP+贪心: 设f[i]表示将消息传给i,i的子树全部接收到所能消耗的最小时间: 那么对于i的所有亲儿子节点j,我们会贪心地先给f[j]大的人传递,然后次大..... 可 ...
- 【实(dou)力(bi)首(mai)发(meng)】第四次CCF软件能力认证题解
这次的题总体上相对前三次偏简单.由于实力有限,就分析前四题. 试题编号: 201503-1 试题名称: 图像旋转 时间限制: 5.0s 内存限制: 256.0MB 问题 ...
- CCF考试真题题解
CCF考试认证:题解参考博客http://blog.csdn.net/u014578266/article/details/45221841 问题描述 试题编号: - 试题名称: 图像旋转 时间限制: ...
- 洛谷NOIp热身赛题解
洛谷NOIp热身赛题解 A 最大差值 简单树状数组,维护区间和.区间平方和,方差按照给的公式算就行了 #include<bits/stdc++.h> #define il inline # ...
- cojs 1001. [WZOI2011 S3] 消息传递
1001. [WZOI2011 S3] 消息传递 ★★ 输入文件:messagew.in 输出文件:messagew.out 简单对比时间限制:1 s 内存限制:128 MB Prob ...
- Android消息传递之基于RxJava实现一个EventBus - RxBus
前言: 上篇文章学习了Android事件总线管理开源框架EventBus,EventBus的出现大大降低了开发成本以及开发难度,今天我们就利用目前大红大紫的RxJava来实现一下类似EventBus事 ...
- 【热门技术】EventBus 3.0,让事件订阅更简单,从此告别组件消息传递烦恼~
一.写在前面 还在为时间接收而烦恼吗?还在为各种组件间的消息传递烦恼吗?EventBus 3.0,专注于android的发布.订阅事件总线,让各组件间的消息传递更简单!完美替代Intent,Handl ...
- 使用Masstransit开发基于消息传递的分布式应用
Masstransit作为.Net平台下的一款优秀的开源产品却没有得到应有的关注,这段时间有机会阅读了Masstransit的源码,我觉得我有必要普及一下这个框架的使用. 值得一提的是Masstran ...
- Storm内部的消息传递机制
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 一个Storm拓扑,就是一个复杂的多阶段的流式计算.Storm中的组件 ...
随机推荐
- C#调用WPS转换文档到PDF的的实现代码。
1.WPS安装,最好用这个版本别的版本不清楚,安装Pro Plus2016版本. https://ep.wps.cn/product/wps-office-download.html 2.添加相关的引 ...
- 基于.NetCore开发博客项目 StarBlog - (20) 图片显示优化
前言 我的服务器带宽比较高,博客部署在上面访问的时候几乎没感觉有加载延迟,就没做图片这块的优化,不过最近有小伙伴说博客的图片加载比较慢,那就来把图片优化完善一下吧~ 目前有两个地方需要完善 图片瀑布流 ...
- SpringCloud Alibaba(二) - Sentinel,整合OpenFeign,GateWay服务网关
1.环境准备 1.1Nacos 单机启动:startup.cmd -m standalone 1.2 Sentinel 启动命令:java -Dserver.port=8858 -Dcsp.senti ...
- 教你用JavaScript实现随机点名
案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript相关知识,做一个随机点名的案例.你可以通过点击开始按钮控制上方名字的闪动,点击停止按钮可以随机选定一个名 ...
- Kubernetes专栏 | 安装部署(一)
--随着云原生概念的普及,许多企业的业务纷纷上云,为了追求可靠性,稳定性,和弹性伸缩,提升资源利用率等需求.Kubernetes这个谷歌开源的容器编排平台已日益流行,被大家熟知和使用. 通常来说,Ku ...
- SpringCloud Alibaba(六) - Seata 分布式事务锁
1.Seata 简介 1.1 Seata是什么 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata 将为用户提供了 AT.TCC.SAGA 和 XA 事 ...
- 【Java SE】Day09 继承、super、this、抽象类
一.继承 1.概述 多个类具有相同属性和行为,共性抽取到一个类中(父类) 父类更通用,子类更具体 2.继承后的成员变量 本类:this.成员变量名 父类:super.成员变量名 3.继承后的成员方法 ...
- 【Java EE】Day03 DQL、约束、数据库设计、范式、备份和还原
〇.总结 1.DQL 聚合函数有空值需要使用ifnull函数 where不能使用聚合函数 分页开始索引的计算,及mysql和oracle的方言 2.约束 删除唯一约束DROP INDEX 列名; 3. ...
- 二阶段目标检测网络-Cascade RCNN 详解
摘要 1,介绍 1.1,Faster RCNN 回顾 1.2,mismatch 问题 2,实验分析 2.1,改变IoU阈值对Detector性能的影响 2.2,提高IoU阈值的影响 2.3,和Iter ...
- [生命科学] 生物基础实验之PCR验证
生物基础实验之PCR验证 文章目录 生物基础实验之PCR验证 实验步骤一 实验步骤二 实验步骤三 配胶 实验步骤四 电泳 实验步骤五 跑胶 实验步骤一 在离心管加入7.5μL Master Mix 溶 ...