P1017

[Ctsc2012]Circuit

[Ctsc2012]Circuit

给定一棵包含 NN 个节点的树,节点编号为 11 到 NN。树上的每条边均为一个阻值为 1 Ω1\,\Omega 的电阻。此外,每个度数为 11 的节点,即叶子节点,都额外通过一个阻值为 1 Ω1\,\Omega 的电阻连接到电位为 0 V0\,\mathrm{V} 的地。

初始时,电路中没有任何电流源,因此所有节点的电位均为 0 V0\,\mathrm{V}。接下来依次执行 MM 个操作,操作分为以下 22 类:

  • 接入一个理想电流源,使 ww 安培的电流从节点 uu 流出,并流入节点 vv。电流源接入后将永久存在,多次接入的电流源会同时起作用,其效果累加。
  • 询问某个节点当前相对于地的电位。

请对每次询问输出对应节点此时的电位。

输入格式

第一行输入两个整数 N,MN,M,分别表示树的节点数和操作数。

接下来 N−1N-1 行,每行输入两个整数 u,vu,v,表示节点 uu 与节点 vv 之间有一条边,边上恰好包含一个阻值为 1 Ω1\,\Omega 的电阻。

接下来输入 MM 个命令,每个命令为以下两种格式之一:

  • C uu vv ww:接入一个理想电流源,使 ww 安培的电流从节点 uu 流出,并流入节点 vv。其中 1≤u,v≤N1\le u,v\le N,u≠vu\ne v,1≤w≤101\le w\le 10,且 ww 为整数。
  • Q xx:询问节点 xx 当前相对于地的电位。其中 1≤x≤N1\le x\le N。

输入中的所有数字和命令字母之间均以任意空白字符分隔,包括空格或换行。因此,一个命令可能与其他输入内容位于同一行。

输出格式

对于每个 Q 命令,按照命令出现的顺序输出一个实数,表示对应节点此时相对于地的电位,单位为伏特。每个结果占一行。

输出的小数位数不限。若输出结果与标准答案的绝对误差不超过 10−310^{-3},则视为正确。

样例输入

4  3
1  2
2  3
2  4 Q 2
C 2 4 5  Q 2

样例输出

0.0000000000
-1.6666666667

样例解释

树中包含边 1−21-2、2−32-3 和 2−42-4,叶子节点为 1,3,41,3,4。

执行第一个命令 Q 22 时,电路中尚未接入任何电流源,因此节点 22 的电位为 0 V0\,\mathrm{V}。

随后执行命令 C 22 44 55,接入一个使 5 A5\,\mathrm{A} 电流从节点 22 流出并流入节点 44 的理想电流源。此时再次询问节点 22,其电位为 −1.6666666667 V-1.6666666667\,\mathrm{V}。

数据范围

  • 3≤N,M≤5×1043\le N,M\le 5\times 10^4;
  • 1≤u,v≤N1\le u,v\le N,且 u≠vu\ne v;
  • 1≤x≤N1\le x\le N;
  • 1≤w≤101\le w\le 10,且 ww 为整数;
  • 树中最长链的长度不超过 5050。

来源与许可

本题为 CTSC 2012 试题「Circuit」,题面与测试数据整理自 BZOJ。

样例 1

输入

4  3
1  2
2  3
2  4 Q 2
C 2 4 5  Q 2

输出

0.0000000000
-1.6666666667