QOJ.ac

QOJ

Time Limit: 5 s Memory Limit: 256 MB Total points: 100

#7591. Régua de tomadas

Statistics

Allison possui muitos aparelhos eletrônicos, como iMac, iPod, iPhone e iPad. Por isso, ela pretende comprar réguas de tomadas para carregá-los. Após uma extensa pesquisa na Internet, Allison encontrou uma bela e delicada régua de tomadas da marca Tianyi (mostrada na imagem inferior à esquerda). Ao vê-la pela primeira vez, Allison ficou encantada com seu belo formato e comprou de uma só vez $n$ réguas desse modelo.

problem_7591_a4d0467265a00f03fbc12ddd7b72ac68.png

Mas surgiu um problema: Allison tem apenas uma tomada em casa, e precisa conectar as réguas para distribuir a eletricidade em vários níveis (como na imagem superior à direita).

As conexões entre as réguas formam uma árvore: o plugue de cada régua é conectado a uma tomada de outra régua, exceto no caso da raiz. As conexões não podem formar ciclos.

Cada régua possui três condutores: fase, neutro e terra. Com o aumento do número de réguas e o desgaste dos condutores, a resistência produzida pelo contato entre os condutores do circuito já não pode ser ignorada.

Como descrever a estrutura em árvore das réguas e as resistências entre seus condutores? Allison elaborou um modelo matemático: $a_i$ representa o identificador da régua $i$, e $f_i$ representa a régua na qual o plugue da régua $i$ está conectado (isto é, o pai de $a_i$ na árvore). Os números $1$, $2$ e $3$ representam fase, neutro e terra, respectivamente. Assim, as resistências do circuito inteiro podem ser descritas por $R(a_i,f_i,x,y)$ ($x,y\in\{1,2,3\}$), que representa a resistência entre o condutor $x$ de $a_i$ e o condutor $y$ de $f_i$. (Nesse modelo matemático, Allison considera que fase e neutro também podem estar conectados e produzir resistência.) Veja um exemplo abaixo:

problem_7591_8c26657b1af921929254aa9efe361923.png

Com o passar do tempo, as resistências entre os condutores também podem mudar. Agora, Allison quer saber a resistência, no instante atual, entre o condutor $x$ da régua $a_i$ e o condutor $y$ da régua $a_j$ no circuito em árvore. A régua que é a raiz da árvore não se conecta a nenhuma outra régua e tem identificador $1$.

Entrada

A primeira linha do arquivo de entrada circuit.in contém um inteiro positivo $n$, o número de réguas.

As próximas $4(n-1)$ linhas são divididas em blocos de $4$ linhas.

A primeira linha do bloco $i$ contém um inteiro $f_i$, indicando que o pai da régua com identificador $i+1$ é a régua $f_i$.

Em seguida vem uma matriz $3\times3$, $g_{xy}$. A entrada na linha $x$ e coluna $y$ representa o inverso da resistência entre o condutor $x$ da régua com identificador $i+1$ e o condutor $y$ de $f_i$.

Em seguida vem um inteiro $q$, indicando o número de operações.

As próximas $q$ linhas contêm alguns inteiros em cada linha.

O primeiro inteiro é $k$. Se $k=1$, seguem quatro inteiros $a_i,x_i,x_j,g$, indicando que a resistência entre o condutor $x_i$ da régua $a_i$ e o condutor $x_j$ de seu pai $f_i$ deve ser alterada para o inverso de $g$. É garantido que $2\le a_i\le n$.

Se $k=2$, seguem quatro inteiros $a_i,x_i,a_j,x_j$, que representam uma consulta à resistência entre o condutor $x_i$ da régua $a_i$ e o condutor $x_j$ da régua $a_j$. É garantido que $a_i\ne a_j$.

Saída

O arquivo de saída é circuit.out.

Para cada consulta, escreva uma linha com um número real que representa a resistência entre os dois condutores.

Se $\left|\frac{\text{saída do participante}-\text{saída padrão}}{\text{saída padrão}}\right|<10^{-3}$, o valor da resistência é considerado correto. Se todos os valores de resistência estiverem corretos, você receberá a pontuação desse caso de teste.

Exemplos

Entrada 1

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

Saída 1

0.083836
0.095256
0.078828
0.146900

Entrada e saída 2

Veja circuit/circuit.in e circuit/circuit.ans no diretório do participante.

Restrições e convenções

Para todos os dados de teste, é garantido que a entrada representa uma árvore. O inverso de cada resistência na entrada é maior que $0$ e menor ou igual a $10$.

Números dos testes Características
1–6 $n\le100$, $q\le1000$; é garantido que a entrada contém apenas consultas, sem alterações
7–10 $n\le1000$, $q\le1000$; é garantido que os dados formam uma cadeia
11–16 $n\le10000$, $q\le10000$; é garantido que a altura da árvore não ultrapassa $30$
17–20 $n\le10000$, $q\le10000$

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.