#P4020. [CTSC2012] 电阻网络
[CTSC2012] 电阻网络
题目描述
给定一个树型电网,树中的每条边上有一个电阻,电阻值均为10000Ω。下图为一个包含4个节点的树型电路情况:
树中的所有叶子节点(度为1的节点称为叶子)都接地,每条线上都接地,每条线上都附有10000Ω的电阻,最终形成的电网如下图所示:
现有如下两种操作:
C u v w
:表示在边<u,v>
上串联一个电源,电源的大小为伏,电源位于靠近节点一侧(如下图所示),电源负极指向。注意同一条边上可以串联多个电源。
Q u
:表示询问点当前的电压,此是指对地。
如对上图进行C 2 4 5
操作后,网络变为:
此时每个节点上的电压见上图的标注。
输入格式
输入文件 circuit.in 的第一行包含两个整数 ,分别表示树的节点数和操作个数。接下来 行,每行两个数 ,表示有一条连接节点 的边,这条边上恰好包含一个电阻。
接下来 行,每行一个命令,格式见题目描述。
输出格式
输出文件为 circuit.out。对于每个 Q
命令,输出一个数表示此刻该点的电压值。你可以输出任意多位的小数,只要你的答案和标准答案相差不超过 10^(-3)
就算合法。
4 3
1 2
2 3
2 4
Q 2
C 2 4 5
Q 2
0.0000000000
-1.6666666666
提示
【样例说明】
对于第一个询问,由于原图中没有电源,所以没有电流,所有点的电压都相
等(否则如果有 U i >U j ,则就有 i 流向 j 的电流,与没有电源矛盾),都等于地电
压 0V。
之后在<2,4>中加一个 5V 的电源,得到的新图见题目描述。
整理后可以发现,新图的形式是串联(电源,R 2 +10000,并联(R 1 +10000,
R 3 +10000)),由此可以得到新图的总电阻为:
R 2 +10000+1/(1/(R 3 +10000)+1/(R 1 +10000))=30000 Ω.
所以流过节点 4 的电流就是 5/30000A,所以 U 4 =5/3V。U 2 =U 4 +R 2 *I-5=-5/3V,由
于 U 1 和 U 3 形式对称,由分压关系可知 U 1 =U 3 =U 2 *10000/(10000+10000)=-5/6V。
【数据规模】
30%的数据保证 N,M ≤ 30
60%的数据保证 N,M ≤ 3000
100%的数据保证 3 ≤ N,M ≤ 50000,1 ≤ u,v ≤ n,1 ≤ w ≤ 10,树中最长链的长
度不超过 50。