Responsive image

问题 2623 --Mex Tree

2623: Mex Tree

时间限制: 2 Sec  内存限制: 256 MB
提交: 0  解决: 0
[提交][状态][讨论版][命题人:]

题目描述

小水獭幼儿园的同学们都十分擅长图论内容,作为优等生的 JJLeo 更是如此。某天,隔壁金州幼儿园的 Bellalabella 向 JJLeo 请教了这样一个问题。
给定一棵 n 个点的树,编号为 1, 2, . . . , n,第 i 个点的权值为 vi,v1, v2, . . . , vn 是 0, 1, . . . , n − 1 的一个排列。
对于 k = 0, 1, . . . , n,Bellalabella 想找到这棵树的一个非空连通子图,其点集 S 满足 mex({vi | i ∈ S})恰好为 k。如果存在这样的非空连通子图,Bellalabella 想知道点数最多的非空连通子图有多少个点。其中 mex(S) 表示不属于 S 的最小非负整数,例如:


• mex({0, 1, 2}) = 3,因为 0, 1, 2 均在 {0, 1, 2} 中,而 3 是不在集合中的最小非负整数。
• mex({1, 2}) = 0,因为 0 不在集合中。
JJLeo 虽然精通树的知识,但是对于 mex 运算却毫无办法,你能帮他解决这个问题吗?



输入描述

第一行,一个整数 n(1 ≤ n ≤ 106),表示树的结点个数。
第二行,n 个整数 v1, v2, . . . , vn,表示每个点的权值。保证 v1, v2, . . . , vn 是 0, 1, . . . , n − 1 的一个排列。
若 n > 1,第三行,n − 1 个整数 f2, f3, . . . , fn(fi < i),表示树上存在边 (fi , i)。

输出描述

一行以空格分隔的 n + 1 个整数,当 k = i(i = 0, 1, . . . , n)时,若不存在满足条件的非空连通子图,第 i + 1 个数为 0,否则第 i + 1 个数为满足条件且点数最多的非空连通子图的点数。

样例输入

3
0 1 2
1 1

样例输出

1 2 2 3

提示


对于样例一:




• k = 0 时,满足条件的非空连通子图的点集为 {2} 和 {3},最多有 1 个点。


• k = 1 时,满足条件的非空连通子图的点集为 {1} 和 {1, 3},最多有 2 个点。


• k = 2 时,满足条件的非空连通子图的点集为 {1, 2},最多有 2 个点。


• k = 3 时,满足条件的非空连通子图的点集为 {1, 2, 3},最多有 3 个点。


来源

[提交][状态]
ACM算法攻关部
  • Anything about this OnlineJudge, Please Contact Administrator. Click add QQ

    OJ system based on HUSTOJ Project , UI based on Twitter Bootstrap

    Copyright 2016 ACM算法攻关部
    关于网站改版