CF1045D Interstellar battle

题目描述

A 国是一个有 $n$ 个星球的帝国,有 $(n-1)$ 条双向虫洞连接它们。虫洞对 A 国有极大的宗教重要性,一些星球认为他们是同一个地区当且仅当它们能通过虫洞互相到达。已知初始时 A 国的所有星球认为他们是同一个地区,也就是说 A 国的地图构成了一棵树。 然而,A 国遇到了强大的同样拥有通讯技术的 B 国军队。B 国每天晚上会对 A 国发起进攻,每次进攻会攻击 A 国的所有星球,使第 $i \ (0 \le i \le n-1)$ 个星球有 $p_i$ 的概率被摧毁,被摧毁的星球无法通过,这会导致 A 国被分为若干个地区。在每天早上(包括第一天),A 国会重建所有星球并改变其中**一个**星球的 $p_i$ 值。现在,A 国的国王找到了你,希望你求出在每一天的修复之后,B 国的进攻期望将他的国家分成多少个地区。 换句话说,A 国的国王希望知道每一次进攻之后他的国家期望会出现多少个连通分量。 Translated by @[Grammar_hbw](/user/856004)

输入格式

第一行一个整数 $n \ (1 \le n \le 10^5)$,表示 A 国拥有的星球数。 第二行 $n$ 个实数 $p_0,p_1,\dots,p_{n-1} \ (0 \le p_i \le 1)$,$p_i$ 的含义已在题目中给出。 接下来 $(n-1)$ 行,每行 $2$ 个整数 $u,v \ (0 \le u,v \le n-1)$,表示 $u$ 号星球和 $v$ 号星球之间有一条虫洞。 接下来一行一个整数 $q \ (1 \le q \le 10^5)$,表示进攻天数。 接下来 $q$ 行,每行一个整数 $x\ (0 \le x \le n-1)$ 和一个实数 $k\ (0 \le k \le 1)$,表示将 $p_x$ 修改为 $k$。**每次修改会对之后的操作产生影响。** 保证任意时刻 $p_i$ 可以用十进制下的两位小数表示。

输出格式

输出 $q$ 行,每行一个**实数**,表示每轮进攻后 A 国被划分成的地区的期望个数。你的答案和标准答案的相对或绝对误差不超过 $10^{-4}$ 就会被判为正确。