P15295 [ROI 2012 Day 1] virus 病毒与杀毒软件

题目背景

翻译来源:[loj #5456. 「ROI 2012 Day 1」病毒与杀毒软件](https://loj.ac/p/5456)。

题目描述

一家杀毒软件 IT 公司拥有正式的管理层级结构。在这个结构中,有一个老板,他是唯一没有上司的员工。其他每个员工都有且仅有一个直接上司。每个上司可以有多个下属,并可以直接或通过下属链传递命令给任意下属。命令只能通过从上司到下属的链条传递。 在该层级结构中,如果员工 $A$ 可以通过直接或通过下属链传递命令给员工 $B$,则称 $A$ 比 $B$ 地位更高。老板比任何员工地位都高。 然而,发现所有员工还组成了一个类似的秘密层级结构,用于开发计算机病毒。在这个秘密结构中,可能有不同的老板和不同的上司关系。 我们称一对员工 $A$ 和 $B$ 为**稳定对**,如果 $A$ 在正式层级结构和秘密层级结构中都比 $B$ 地位高。 你需要编写一个程序,计算公司中稳定对的数量。

输入格式

输入文件的第一行包含一个整数 $N$ $(1 \leq N \leq 100000)$,表示公司员工的数量。 第二行包含 $N$ 个整数 $a_i$,其中如果在正式层级结构中编号为 $i$ 的员工是老板,则 $a_i = 0$;否则 $a_i$ 为该员工直接上司的编号。 第三行包含 $N$ 个整数 $b_i$,其中如果在秘密层级结构中编号为 $i$ 的员工是老板,则 $b_i = 0$;否则 $b_i$ 为该员工直接上司的编号。 员工编号从 $1$ 开始,按输入文件中提到的顺序排列。

输出格式

输出文件应包含一个整数,表示稳定对的数量。

说明/提示

详细子任务附加限制及分值如下表所示: | 子任务 | 分值 | 附加限制 | | :----: | :--: | :---------------------------: | | $1$ | $25$ | 员工数量 $N \leq 100$ | | $2$ | $25$ | 员工数量 $N \leq 2000$ | | $3$ | $50$ | 员工数量 $N \leq 100000$ |