セットF [i]は点iから脱出するステップの所望の数を表し、明確再帰の$ F [I]のKi \ = CDOT F [1] +(1-EI-KI)/ sの[I](F [FA] +1+ \ sum_ {息子 }(F [息子] +1))$( R&LT [i]は、I)点の程度を表します。
高ガウス3の除去の複雑さは、通過できないが、すべての点で見つけることができるF $を使用することができるであろう[I] *の= F [1] + b *表F [FA] + C $はリーフノードから、表されています常に、bおよびcの特定の点によって押し上げ計算することができ、次いで、Fについて解くことができる[1](すなわち、回答)
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 の#define N 10005 4 構造体JI { 5 int型のNEX、であり; 6 }エッジ[N << 1 ]。 7 int型E、T、N、X、Y、P1 [N]、P2 [N]、ヘッド[N]。 8 ダブル[N]、B [N]、[N] C。 9 ボイド追加(int型のx、int型のY){ 10 エッジ[E] .nex = 頭部[X]。 11 エッジ[E] .TO = Y。 12 頭[X] = E ++ 。 13 } 14 ボイド DFS(int型の kは、INT FA){ 15 二重のS =(> FA 0)、Tは[K] = Cの[K] = = 0 。 16 のために(int型 - ;!I = I =ヘッド[k]を1 ; I = エッジ[I] .nex) 17 であれば(エッジ[I] .TO =!FA){ 18 のint V = エッジ[I] .TO ; 19の DFS(V、K)。 20 秒++ ; 21 [K] + = [V]。 22 T + = B [V]。 23個の C [K] + = C [V] + 1 。 24 } 25 秒= 0.01 *(100 -p1 [K] -P2 [K])/ S。 26 、T = 1 -t * S。 27 [K] =([K] * S + 0.01 * P1 [K])/ T。 28件の B [K] = S / T。 29個の C [K] =(C [K] +(FA> 0))* S / T。 30 } 31 INT メイン(){ 32 のscanf(" %dの"、&T)。 33 のために(INT II = 1 ; II <= T; II ++ ){ 34 のscanf(" %のD "、&N) 35 E = 0 。 36 のmemset(ヘッド、 - 1、はsizeof (ヘッド))。 37 のために(int型 i = 1 ; iがN <; Iは++ ){ 38 のscanf(" %D%dの"、およびX&Y)。 39 追加(X、Y) 40 追加(Y、X)。 41 } 42 のための(int型 i = 1 ; iが<= N; iが++)のscanf(" %D%dの"、およびP1 [I]を、&P2 [I])。 43の DFS(1、0 ); 44 であれば([ 1 ] == 1)のprintf(" ケース%のD:不可能に\ n " 、II)。 45 他の printf関数(" ケース%のD:%.6f \ n "、II、C [ 1 ] /(1.0 -a [ 1 ]))。 46 } 47 }