P13350 「ZYZ 2025」遗传

题目背景

唉,转生竞吧!

题目描述

**如果你不了解生物的遗传学知识,可以阅读以下部分:** > 每个生物 M 都有两个属性,记属性一为 $X\in\{A,a\}$,属性二为 $Y\in\{A,a\}$,称 $XY$ 为其**基因型**,包括 $AA,Aa,aa$ 三种,这里认为 $Aa$ 和 $aA$ 等价。 > > 对于生物 M 可患的遗传病 I,若 I 为**隐性遗传病**,则该生物患病当且仅当其基因型为 $aa$,若 I 为**显性遗传病**,则该生物患病当且仅当其基因型为 $Aa$ 或 $AA$。 > > 若基因型为 $X_1Y_1$ 和 $X_2Y_2$ 的生物交配,则其后代的基因型有四种情况:$X_1X_2,X_1Y_2,Y_1X_2,Y_1Y_2$,且每种情况的概率相同,均为 $\dfrac{1}{4}$。 > > 若 $A$ 的**基因频率**为 $p$,则认为在没有其他条件的影响下(在本题中“其他条件”包括“知道其父母”),一个生物 M 的两个属性各自有 $p$ 的概率为 $A$,$1-p$ 的概率为 $a$,且相互独立。 > > 现在有一种生物 M 可患的遗传病 I,已知其是显性还是隐性,$A$ 的基因频率为 $p$。 **否则,你可以阅读以下部分:** > 现在有一种和生物 M 有关的遗传病 I,已知其是显性还是隐性,其受一对常染色体等位基因 $(A,a)$ 控制,该基因的遗传符合孟德尔遗传规律,不考虑基因突变、染色体变异,交叉互换等特殊情况。 > > **已知** $A$ 的基因频率是 $p$,即认为在没有其他条件的影响下(在本题中“其他条件”包括“知道其父母”),一个生物 M 的两个基因各自有 $p$ 的概率为 $A$,$1-p$ 的概率为 $a$,且相互独立。 现在有 $n$ 个生物 M,第 $i$ 个生物的父亲为 $fa_i$,母亲为 $mo_i$,若 $fa_i=0$ 或 $mo_i=0$ 则表示父亲或母亲未知。为了简化问题,保证 $fa_i$ 和 $mo_i$ 要么**均为** $0$,要么**均不为** $0$,且**恰有一个**生物 M 没有孩子,其余生物 M **恰有一个孩子**。 给出 $n$ 个生物的关系,已知部分生物的患病情况,你需要分别求出每一个生物基因型为 $AA,Aa,aa$ 的概率,对 $10^9+7$ 取模。 你可以参见样例解释以更好的理解这个题目。 **保证数据合法且保证数据随机生成**。

输入格式

第一行输入四个整数 $n,t,a,b$,$n$ 表示生物总数,$t = 0$ 表示疾病 I 为隐性,$t = 1$ 表示疾病 I 为显性,$A$ 的基因频率 $p=\dfrac{a}{b}$。 接下来 $n$ 行,第 $i$ 行首先输入一个整数 $k_i$,若 $k_i=0$ 表示第 $i$ 个生物患病,$k_i=1$ 表示不患病,$k_i=2$ 表示患病状况未知。再输入两个整数 $fa_i,mo_i$ 分别表示其父亲、母亲的编号,若编号为 $0$,则表示父母未知。

输出格式

输出 $n$ 行,其中的第 $i$ 行输出三个整数,分别表示第 $i$ 个生物基因型为 $AA,Aa,aa$ 的概率,结果对 $10^9+7$ 取模。

说明/提示

**【样例解释】** 记第 $i$ 个生物为 $M_i$,其基因型为 $S_i$。由于 $M_2$ 患隐性遗传病,所以 $S_2=aa$ 且 $M_3$ 含有基因(属性)$a$。又因为 $M_3$ 不患病,所以 $S_3=Aa$。 因为 $M_1$ 和患病的 $M_2$ 生出不患病的 $M_3$,所以 $M_1$ 一定不患病。因为 $p=\dfrac12$,所以对于一个随机的不患病的个体,其基因型为 $AA$ 和 $Aa$ 的概率之比为: $$\left(\dfrac12\times\dfrac12\right):\left(2\times\dfrac12\times(1-\dfrac12)\right)=1:2$$ 又因为基因型为 $AA$ 和 $aa$ 的个体生出 $Aa$ 个体的概率为 $1$,基因型为 $Aa$ 和 $aa$ 的个体生出 $Aa$ 个体的概率为 $\dfrac12$,所以 $S_1$ 为 $AA$ 和 $Aa$ 的概率之比为: $$\left(\dfrac13\times1\right):\left(\dfrac23\times\dfrac12\right)=1:1$$ 所以 $S_1$ 为 $AA$ 和 $Aa$ 的概率相同,均为 $\dfrac12$。 **【数据范围】** **本题采用捆绑测试。** |子任务编号|特殊性质|分值| |:-:|:-:|:-:| |$0$|$n\leq5$|$15$| |$1$|任意 $i\in[1,n]$ 满足 $k_i=2$|$15$| |$2$|$n\leq 5\times 10^3$|$30$| |$3$|无|$40$| 对于 $100\%$ 的测试数据,保证:$1\leq fa_i,mo_i\leq n \leq10^5$,$t\in\{0,1\}$,$1\leq a< b\leq 10^9$,$k_i\in\{0,1,2\}$,保证出现题目给出情况的概率在模 $10^9+7$ 意义下不为 $0$,**保证数据随机生成**。