晋升者
成绩 | 100 | 开启时间 | 2020年06月18日 星期四 11:00 |
折扣 | 0.8 | 折扣时间 | 2020年06月18日 星期四 11:00 |
允许迟交 | 是 | 关闭时间 | 2020年06月18日 星期四 11:00 |
输入文件 | promotion.in | 输出文件 | promotion.out |
【题目描述】晋升者(promotion)BZOJ 4756
一个由编号为1~N(1≤N≤100 000)的N个魔法师组成的组织,其组织结构可以看成是一棵树,1号魔法师作为总裁,是这棵树的根结点。除了总裁以外的每个魔法师都有一个单独的上司(他在树上的 “双亲结点”)。所有的第 i 个魔法师都有一个不同的能力指数p(i),描述了他对其工作的擅长程度。如果魔法师i是魔法师j的祖先结点(例如上司的上司),那么我们我们把魔法师j叫作魔法师 i的下属。
可以想象的是,魔法师们发现经常发生一个上司比他的一些下属能力低的情况,在这种情况下,上司应当考虑晋升他的一些下属。你的任务是帮助他弄清楚具体情况,简而言之,对于公司中的每一个魔法师i,请计算其下属j的数量满足p(j)>p(i)。
【输入格式】
输入的第一行包括一个整数 N。
接下来的 N行包括魔法师们的能力指数 p(1)~p(N),保证所有数互不相同,数据范围在区间1~ 109 之间。
接下来的N−1 行描述了2 ~N号魔法师上司(双亲结点)的编号。再次提醒,1号魔法师作为总裁,没有上司。
【输出格式】
输出包括 N 行。输出的第 i 行应当给出有多少魔法师i的下属比魔法师i能力高。
【输入样例】
5
804289384
846930887
681692778
714636916
957747794
1
1
2
3
【输出样例】
2
0
1
0
0