C. Tree Infection(二分)
创始人
2024-02-22 06:37:37

Problem - 1665C - Codeforces

 

一棵树是一个没有循环的连接图。一棵有根的树有一个特殊的顶点,叫做根。一个顶点v(不同于根)的父顶点是指从根到顶点v的最短路径上的前一个顶点。

给你一棵有n个顶点的有根树。顶点1是根。最初,所有顶点都是健康的。

每一秒钟你做两个操作,传播操作,之后是注入操作。

传播:对于每个顶点,如果至少有一个v的孩子被感染,你可以通过感染你选择的v的最多一个其他孩子来传播疾病。
注入:你可以选择任何健康的顶点并感染它。
这个过程每秒重复一次,直到整个树被感染。你需要找到感染整棵树所需的最小秒数。

输入
输入由多个测试案例组成。第一行包含一个整数t(1≤t≤104)--测试案例的数量。测试用例的描述如下。

每个测试用例的第一行包含一个整数n(2≤n≤2⋅105)--给定树中顶点的数量。

每个测试用例的第二行包含n-1个整数p2,p3,...,pn(1≤pi≤n),其中pi是树中第i个顶点的祖先。

可以保证给定的图是一棵树。

保证所有测试案例的n之和不超过2⋅105。

输出
对于每个测试案例,你应该输出一个整数--感染整个树所需的最小秒数。

例子
inputCopy
5
7
1 1 1 2 2 4
5
5 5 1 4
2
1
3
3 1
6
1 1 1 1 1
输出拷贝
4
4
2
3
4

题解:
首先我们要明确:

只有同一个父节点的字节的才可以通过传播感染,子节点是无法传播到父节点的,所以父节点只能通过注入感染

但是还有一个特例,1是没有父节点的,所以他只能通过注入感染

所以初始cnt = 0

对于传播感染,前提是父节点已经感染,

然后就是二分

最先开始传播感染的应该是字结点最多的,所以我们要排一下序

每次check,x秒内是否可以全部感染完即可

剩下一些细节在代码中有注释

#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define int long long
//1 1 3 3 3
int son[200050];
int cnt;
vector v[200050];
int check(int x)
{int ans = 0;int k = 0;for(int i = 1,j = x- 1;i <= cnt;j --,i++)//被传播感染的结点,前提是有一个已经传染的父节点,所以先减1{ans += max(k,son[i] - j);}return x - cnt>= ans;//先注入感染的在这里有体现,减了cnt个注入感染的
}
void solve()
{int n;cin >> n;for(int i = 1;i <= n;i++)v[i].clear();for(int i = 2;i <= n;i++){int x;cin >> x;v[x].push_back(i);}cnt = 1;//由于1没有父节点,所以1肯定是要通过方式2感染的 son[1] = 0;//单纯清空数组,无特殊含义 for(int i = 1;i <= n;i++){if(v[i].size()){son[++cnt] = v[i].size() - 1;//要开始传播感染,首先要注入感染一个}} sort(son+1,son+1+cnt,greater<>());int l = cnt,r = n;while(l <= r){int mid = (l+r)/2;if(check(mid)){r = mid - 1;}else{l = mid + 1;}}cout<> t;while(t--){solve();}
}

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...