#P13597. 『GTOI - 1D』回归空白

『GTOI - 1D』回归空白

题目背景

就算自身将浸于无边无际的悲叹

也要回归空白 空白的未来……

题目描述

泠珞有一个有 nn 个节点的无根树,第 ii 条边连接了第 xix_i 个节点和第 yiy_i 个节点,第 ii 个节点上有一个正整数 pip_i

有时树上的数会发生变化,第 kk 条边两端的节点上的数字会发生交换,即 pxkp_{x_k} 会与 pykp_{y_k} 互换。

有时泠珞会问你,如果一开始只有从节点 ss 到节点 tt 的简单路径上的节点是白色的,其他节点是蓝色的,执行下面的步骤直到所有节点都变成白色,执行步骤次数的期望是多少?

随机选择一个蓝色节点 bb 和一个白色节点 ww,选择每个节点的概率与节点上的数字成正比,把节点 bb 到节点 ww 的简单路径上的所有节点涂为白色。

具体的,如果第 ii 个节点是白色的,选择他的概率是

picj=0pj\frac{p_i}{\sum\limits_{c_j=0}p_j}

如果第 ii 个节点是蓝色的,选择他的概率是

picj=1pj\frac{p_i}{\sum\limits_{c_j=1}p_j}

其中 cic_i 代表第 ii 个节点的颜色,为 00 表示白色,为 11 表示蓝色。

因为出题人的刻意设计,你要告诉泠珞答案 mod109+7\text{}\bmod10^9+7 的结果。

你能正确地回答泠珞的每一个问题吗?

输入格式

第一行包含两个正整数 n,mn,m,表示树的结点数和操作总数。

第二行包含 nn 个正整数,第 ii 个正整数为 pip_i,表示树上第 ii 个节点上的数字。

接下来的 n1n-1 行,第 ii 行包含两个正整数 xi,yix_i,y_i,描述了树上的一条边 (xi,yi)(x_i,y_i)

接下来 mm 行每行表示一次修改或询问。首先读入一个正整数 tptp 表示指令类型:

  • tp=1tp = 1,接下来一个正整数 kk 表示交换第 kk 条边两端的节点上的数字 pxkp_{x_k}pykp_{y_k}
  • tp=2tp = 2,接下来两个正整数 s,ts,t 表示泠珞的一次询问。

输出格式

对于每次询问,输出一行一个整数,表示答案。

5 5
1 2 3 4 5
1 2
1 3
2 4
2 5
2 1 5
2 3 3
1 1
2 4 5
2 1 3
2
719696977
800000007
700000007

提示

【样例解释】

样例中后三个询问的答案写成分数形式分别是 299132\frac{299}{132}75\frac{7}{5}2110\frac{21}{10}

【数据范围】

本题采用捆绑测试。

Subtask\text{Subtask} n,mn,m\le 特殊性质 分数
11 1212 1010
22 20002000 2020
33 10510^5 1in\forall1\le i\le npi=114p_i=114 1010
44 保证询问中 s=1s=1
55 2525
66 5×1055\times10^5

对于所有数据,保证:1n,m5×1051\le n,m\le5\times10^51xi,yin1\le x_i,y_i\le n,输入的图是一棵树,1pi1091\le p_i\le10^9pi<109+7\sum p_i<10^9+71tp21\le tp \le2,询问中 1s,tn1\le s,t\le n,修改中 1kn11\le k\le n-1

【提示】

请注意常数因子对程序效率的影响