トピックの背景
Baiduのスペースの新バージョンの発売により、新しい家を見つけるために、その使命を完了するために、ペットのカエルブログ。
タイトル説明
張与えるNN n点ミリ有向非循環グラフのMエッジを、出発点である。11 の1端NNのN-、各辺の長さを有し、全ての点に到達するために、出発点から出発して、すべての点でもあります私たちは、最後に到達することができます。
終わりに向かって開始点から、カエル。各頂点は、ノードが有する場合に、達成されるKK K物品の縁を蛙離れエッジから、確率のそれぞれの側に任意の一点を選択することができる1K \ FRAC。1} {K} { K 1 。今カエル最初から期待の合計の長さはどのくらいされる経路の最後に、知っていただきたいと思いますか?
入力形式
図の点の数を表す入力2つの整数の最初の行NNの辺のn数とミリM。
22である2 (1 M +)(M + 1) (M + 1 )行の、三つの整数有する各列U、V、ウー、V、W U 、V 、Wは、からの存在を示しているのUu ポインティングUをVVをV長WW Wは、エッジを指示しました。
出力フォーマット
出力実数ラインは2桁まで丸め答えを表します。
サンプル入力と出力
入力#1
4 4 1 2 1 1 3 2 2 3 3 3 4 4
出力#1
7.00
及び質問は非常に類似しているが、あなたが最大から最小へ直接トラバースすることができ、そしてこの問題はサイドエッジDPをソートしなければならなかったので問題は、トポロジー行に従って既にポイント数降順であることをAtCoder前。DP [I] nを所望の長さ、伝達方程式Iからの代表的なパス:DP [I] =(Σdp [K] +エッジ[I、K])/度[i]は、 I kがエッジであります終わり、エッジ[I、K] iをkエッジの長さ、度[I]は、度で、Iです。メモリアレイの2ながら、アレイ外に伝達方程式と同様に、抗図の再帰の必要性エンドポイントから出発して、トポロジカルソート(ない一見二つの配列QuQ)としてアレイのOUT1。
#include <ビット/ STDC ++ H.> の#define N 100005 の#define M 200005 使用して 名前空間STD; int型 N-、M、ヘッド[N]、版[M]、エッジ[M]、次に[M]、TOT = 0 。 二重DP [N]; int型 OUT [N] = { 0 }、のOUT1 [N] = { 0 }; // OUT [i]はiが(オリジナルではなく、抗図)の点が表す 無効に追加します(INTの X、INT Y、INT Z) { 版[ ++ TOT = Y;エッジ【TOT] = Z; 次に[TOT] =頭部[X]、ヘッド[X] = TOT; } ボイドプロセス() { キュー < 整数 > Q; q.push(N) DP [N] = 0 ; 一方、(q.size())// 拓扑排序 { int型プリ= q.front()。 q.pop(); int型私は、 用(; I iが= Iがヘッド= [事前] 次に[I]) { int型、Y =版[i]は、Z = エッジ[I]を、 DP [Y] + =(DP [事前] + Z)* 1.0 / アウト[Y]。 もし(--out1 [Y] == 0)// 拓扑排序条件 { q.push(Y)。 } } } } int型のmain() { CIN >> N >> M。 int型私は、 以下のために(iは= 1 ; iが<= M; I ++ ) { int型のX、Y、Z。 scanf関数(" %D%D%D "、およびX&Y、およびZ)。 (Y、X、Z)を追加します。// 逆推建反图 アウト [X] ++ ; OUT1 [X] ++ ; } プロセス()。 printf(" %の.2lf "、DP [ 1 ])。 リターン 0 ; }