【hdu4035]迷路

セット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(10 );
44          であれば([ 1 ] == 1)のprintf(" ケース%のD:不可能に\ n " 、II)。
45          他の printf関数(" ケース%のD:%.6f \ n "、II、C [ 1 ] /(1.0 -a [ 1 ]))。
46      }
 47 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/PYWBKTDA/p/11333785.html