题目描述
Vétyem Woods 是一片著名的缤纷多彩的森林。其中最老最高的一棵山毛榉树叫 Ős Vezér。
树 Ős Vezér 可以被建模成
每条边都有某种颜色。一共有
注意,在上面的定义中,
例如,假定 Ős Vezér 有
Árpád 是一位才华横溢的护林人,他喜欢研究树上被称为子树的部分。
对所有满足
- 结点
属于 。 - 如果某个结点
属于 ,则 的所有子结点都属于 。 - 除了上述情况以外,其他结点都不属于
。
集合
Árpád 最近发现了一个复杂但有趣的子树性质。Árpád 的发现需要用到大量的纸和笔做演算,他认为你需要做同样的事情才能完成理解。他还会给你几个例子,让你能够对它们做详细的分析。
假设我们有某个给定的
对于所有满足
(注意,
置换
。- 对于所有满足
的 ,结点 的父结点是 。
对于所有满足
考虑上面给出的树的例子。可以看到,子树
考虑一个由不同整数构成的序列
我们将要验证,这是一个绝妙置换。
。 ,原因是 在序列 中出现了 次。- 相应地,
的父结点是 。也就是说, 的父结点是 。(形式化地, 。)
- 相应地,
,原因是 在序列 中出现了 次。- 相应地,
的父结点是 。也就是说, 的父结点是 。
- 相应地,
,原因是 在序列 中出现了 次。- 相应地,
的父结点是 。也就是说, 的父结点是 。
- 相应地,
,原因是 在序列 中出现了 次。- 相应地,
的父结点是 。也就是说, 的父结点是 4。
- 相应地,
,原因是 在序列 中出现了 次。- 相应地,
的父结点是 。也就是说, 的父结点是 。
- 相应地,
,原因是 在序列 中出现了 次。- 相应地,
的父结点是 。也就是说, 的父结点是 。
- 相应地,
由于我们能为
你的任务是,帮助 Árpád 确定 Ős Vezér 的每棵子树是否是绝妙的。
实现细节
你需要实现以下函数。
int[] beechtree(int N, int M, int[] P, int[] C)
:树中的结点数量。 :树中边的可能颜色的数量。 , :长度为 的两个数组,以描述树中的边。- 该函数应当返回长度为
的某个数组 。 对所有满足 的 ,如果 是绝妙的,则 应为 ,否则应为 。 - 该函数在每个测试用例上恰好被调用一次。
样例
样例 1
考虑如下调用:
beechtree(4, 2, [-1, 0, 0, 0], [0, 1, 1, 2])
这棵树如下图所示:
样例 2
考虑如下调用:
beechtree(18, 3, [-1, 0, 0, 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 10, 11, 11], [0, 1, 2, 3, 1, 2, 3, 1, 3, 3, 2, 1, 1, 2, 2, 1, 2, 3])
这个例子在题面中已经给出。
函数应当返回
样例 3
考虑如下调用:
beechtree(7, 2, [-1, 0, 1, 1, 0, 4, 5], [0, 1, 1, 2, 2, 1, 1])
该例子如下图所示。
约束条件
(对于所有满足 的 ) (对于所有满足 的 ) 且
子任务
- (9 分)
且 - (5 分)边
从结点 连接到结点 。也就是说,对所有满足 的 ,都有 。 - (9 分)除了结点
以外,其他结点要么连接到结点 ,要么连接到某个连接到结点 的结点。 也就是说,对于所有满足 的 ,要么有 ,要么有 。 - (8 分)对于所有满足
的 ,至多有两条边的颜色为 。 - (14 分)
且 - (14 分)
且 - (12 分)
- (17 分)
- (12 分) 没有额外的约束条件。
评测程序示例
评测程序示例按以下格式读取输入:
- 第
行: - 第
行: - 第
行:
令 beechtree
所返回的数组中的元素。评测程序示例以如下格式,在单行中输出你的答案:
* 第
时间限制:
空间限制: