qb#P10024. 春日市集 · 摆摊调度记

春日市集 · 摆摊调度记

春天的周末,河畔社区要办一场两天的“春日手作市集”。 社区的摊主们人人都有唯一一种拿手风格(比如“编织 / 手绘 / 木作 / 烘焙 ……”)。整场市集由总召(编号 0)统筹,其他摊主各自有唯一的直接负责人,就像“组长—组员”的层层关系。你可以把这种上下级关系想成一棵从总召出发的层级树:越靠近总召层级越高,离得越远层级越低。

总召想为“中心展区”凑一支尽可能壮大的队伍,并规定:

  1. 先确定一位展区负责人(称为“队长”)。这位队长的拿手风格,也就是本展区统一采用的风格。

  2. 谁能直接进队:凡是在这位队长的下属体系中,并且拿手风格与队长相同的摊主,都能直接进入展区队伍。

  3. 可以做位置互换来扩军:为了多拉些“同风格”的摊主入队,总召可以重复执行下面的操作任意次:

    • 选中两个处在相同层级(到总召的“上级数”相同)的摊主 A 和 B;
    • 其中 A 现在在队长的体系里但与队长风格不同;B 不在队长的体系里但与队长风格相同
    • 互换 A 与 B 的位置:他们各自原本带的手工小伙伴(下属)原地不动,跟着 A 或 B 一起“整体搬家”。

你的任务是: 在所有可行的选择队长与互换操作中,尽量让展区队伍人数最多;若能达到最大人数的方案不止一种,要求输出所需互换次数最少的那种。


输入格式

  • 第一行两个整数 NNKK:摊主总数与风格种类数。摊主编号为 0..N10..N-1,总召编号为 00
  • 第二行包含 NN 个整数 tit_i0ti<K0 ≤ t_i < K):第 ii 位摊主的拿手风格编号。
  • 接下来 N1N-1 行描述层级关系:第 ii 行(1iN11 ≤ i ≤ N-1)给出一个整数 pip_i0pi<N0 ≤ p_i < N),表示摊主 ii直接上级pip_i。保证无环,形成一棵树。

输出格式

输出两个整数 PPSS

  • PP:最大可到达的队伍人数(含队长);
  • SS:达到人数 PP 时所需的最小互换次数。

样例

输入
9 3
0 0 2 1 2 0 2 1 2
4
8
1
0
4
1
0
7
 

输出
4 2

解释: 若选择 4 号为队长(风格 2),他手下本来就有 2 位同风格。再看每个层级:有两位“在队里但不同风格”的摊主,恰好在外面同层各有一位风格 2,可以各换一次,最终队伍共 4 人,且仅需 2 次互换。


数据范围

组别 分值 限制
1 12 形成“单链”:pi=i1p_i = i-1
2 19 K2K ≤ 2
3 27 每种风格的总人数 ≤ 10
4 23 N2000N ≤ 2000
5 19 无额外限制(N1e5N ≤ 1e5