Logo 邂逅编程之美

UOJ

时间限制:0.999 s 空间限制:1024 MB
统计

小 $\omega$ 的树($\texttt{b}$)

题目描述

小 $\omega$ 有两棵有根树 $T_1,T_2$,其中点无标号,儿子有顺序(初始按编号大小顺序)。小 $\omega$ 还有一个集合 $S$,他会进行 $q$ 次操作,每次在集合中加入或删除一个元素 $x$。定义两棵树的相似程度为将 $T_1$ 的每个点替换为一条链,其中链的长度 $len \in S$,链头接父亲,链尾接所有儿子后,$T_1=T_2$ 的方案数(替换同时发生)。 小 $\omega$ 希望知道每次操作后两棵树的相似程度,对 $10^9+7$ 取模。

此处提到的链长度指点数,$T_1=T_2$ 指 $T_1$ 和 $T_2$ 同构,儿子有顺序指去掉父亲后儿子按照相对顺序同构。

输入格式

第一行两个整数 $n_1,n_2$,表示 $T_1,T_2$ 的结点个数。

第二行 $n_1-1$ 个整数 $fa_{1,2},fa_{1,3},\cdots ,fa_{1,n_1}$,表示 $T_1$ 中 $i$ 的父亲($fa_{1,i}

第三行 $n_2-1$ 个整数 $fa_{2,2},fa_{2,3},\cdots ,fa_{2,n_2}$,表示 $T_2$ 中 $i$ 的父亲($fa_{2,i}

第四行一个整数 $q$,表示询问个数。

接下来 $q$ 行,每行为 $1\ x$ 或 $2\ x$,其中 $1$ 表示加入元素 $x$,$2$ 表示删除。保证加入 $x$ 时,$x$ 原本不属于 $S$;删除 $x$ 时,$x$ 原本属于 $S$。

输出格式

$q$ 行,每行一个答案,对 $10^9+7$ 取模。

样例一

input

5 8
1 1 3 3
1 1 2 3 3 5 6
5
1 1
1 2
1 3
2 1
2 2

output

0
1
1
0
0

样例二

见附件中的 ex_b2.inex_b2.ans,此样例满足子任务 $2$。

样例三

见附件中的 ex_b3.inex_b3.ans,此样例满足子任务 $3$。

限制与约定

本题采用捆绑测试。

令 $n=\max(n_1,n_2)$。

对于 $100\%$ 的数据,满足 $1\leq x\leq n\leq 800,1\leq q\leq 100$。

子任务编号 分值 $n\leq$ $q\leq$
$1$ $20$ $10$ $10$
$2$ $20$ $100$ $100$
$3$ $60$ $800$ $100$