完整翻译
查看原帖
完整翻译
444672
cujam楼主2021/9/22 11:52

题目描述

在那块魔鬼般的镜子击中凯的眼睛后,他对玫瑰花的美丽不再感兴趣了。现在他喜欢看雪花。

很久以前,他发现了一片巨大的雪花,它的形式是由n个节点组成的树(连接的无环图)。树的根为1 。凯对这棵树的结构非常感兴趣。

在做了一些研究后,他有q个询问。第i个查询要求找到节点i的子树的重心v[i]。你的目标是回答所有的查询。

一个节点的子树是由这个节点和它的所有后代(直接或不直接)组成的树的一部分。换句话说,节点v的子树是由节点u形成的,节点v出现在从u到根的路径上。

树(或子树)的重心是一个节点,如果我们把它从树上抹去,它的最大子树大小都不超过整棵树大小的一半。

输入格式

输入的第一行包含两个整数n和q(2<=n<=300000,1<=q<=300000) --分别为初始树的大小和查询次数。

第二行包含n-1个整数p[1].p[2].p[3]....p[n] (1<=p[i]<=n)表示从2到n的节点的父节点。节点1是该树的根。可以保证 定义了一棵正确的树。

下面的q行每行都包含一个整数i ( 1<=i<=n )--定义子树,我们要为其寻找重心

输出格式

对于每个询问输出该子树的重心。保证每个子树至少含有一个重心(这不是废话吗

2021/9/22 11:52
加载中...