#P4504. [CTSC2014] 插线板

[CTSC2014] 插线板

题目背景

#警告:滥用本题评测将封号

题目描述

Allison有非常多的电子设备,比如iMac,iPod,iPhone和iPad。所以她准备购买插线板来给电子设备充电。在做了大量的网络调研后,Allison发现了一款美丽精巧的天翼牌排插(如左下图所示)。在见到这个插线板的第一眼,Allison就被它的精美造型所吸引,于是她一次性购买了n个这种型号的插线板。

可是问题也随之而来,Allison的家中只有一个插座,她需要通过插线板的连接将电一层一层地导出(如右上图所示)。

插线板的连接方式是树形结构的:每个插线板的插头插在另一个插线板的插空中(除了根节点),插线板的连接不允许构成环。

每个插线板有火线,零线,地线三根导线,随着插线板数量的增加、导线的磨损,电路中导线与导线之间接触产生的电阻已经到了不能被忽视的地步。

如何来描述插线板的树形结构以及导线之间的电阻关系呢?Allison思考出来一个数学模型:用aia_i代表第ii个插线板的编号,fif_i代表第ii个插线板的插头所差的插线板(即aia_i在树中的父亲),11代表火线,22代表零线,33代表地线,则整个网络的电阻可以用R(ai,fi,x,y)(x,y{1,2,3})R(a_i,f_i,x,y)(x,y∈\{1,2,3\})来描述,它代表aia_ixx线与fif_iyy线之间的电阻值(在这个数学模型中,Allison认为火线和零线也是可能连接并且产生电阻的)下面是一个例子:

由于时间的推移,导线与导线之间的电阻还可能发生变化。现在,Allison想知道在插线板树形电路中,当前时刻aia_i插线板的xx线和aja_j插线板的yy线之间的电阻是多少。规定插线板的树根节点不再插向其他插线板,且编号为11

输入格式

第一行包含一个正整数nn,表示插线板的个数。

接下来4(n1)4(n-1)行,每4行为一个块。

ii块的第一行为一个整数fif_i【注:原题如此。实际应该是fi+1f_{i+1},下同】,表示编号为i+1i+1的插线板的父亲为fif_i【注:同上】插线板。

接下来一个3×33\times3的矩阵gxyg_{xy},第xx行第yy个数表示编号为i+1i+1的插线板的xx线和fif_i【注:同上】的yy线之间的电阻的倒数

接下来一个整数qq,表示qq个操作数。

第一个整数位kk,若k=1k=1则接下来包含四个整数ai,xi,xj,ga_i,x_i,x_j,g,表示将aia_i插线板的xix_i线与aia_i插线板的父亲fif_i【注:原题如此。实际应该是faif_{a_i}】的xjx_j线之间的电阻值改为gg的倒数。保证2ain2≤a_i≤n

k=2k=2,则接下来包含四个整数ai,xi,aj,xja_i,x_i,a_j,x_j,表示询问aia_i插线板的xix_i线与aja_j插线板的xjx_j线之间的电阻大小。保证aiaja_i≠a_j

输出格式

对每个询问,输出一行实数,表示两条线之间的电阻。

若|(选手输出-标准输出)/标准输出|103≤10^{-3},则被认为该电阻值正确,若所有电阻值皆正确,则可获得该测试点的得分。

3
1
6 7 1 
4 1 8 
8 3 3 
2
7 5 8 
10 5 7 
10 5 5 
10
1 3 1 2 2
1 2 2 3 5
2 3 2 2 2
1 2 3 2 5
1 3 1 2 3
2 1 2 2 3
1 3 2 1 2
2 2 1 1 1
1 2 1 2 5
2 3 1 1 2
0.083836
0.095256
0.078828
0.146900

提示

对于所有测试数据,输入保证是一棵树。0<0<输入中电阻的倒数10≤10

测试点编号 特点
161\sim6 n100,q1000n≤100,q≤1000,保证输入中只有查询没有修改
7107\sim10 n1000,q1000n≤1000,q≤1000,保证数据是一条链
111611\sim16 n10000,q10000n≤10000,q≤10000,保证树的高度不超过3030
172017\sim20 n10000,q10000n≤10000,q≤10000