サプライチェーンは、小売業者(零售商)、ディストリビュータ(经销商)のネットワークであり、供給者(商供应) - 誰もが顧客に供給業者から製品を移動させることに関与します。
1社のルートのサプライヤーから始まり、チェーン上の誰もが価格に1のサプライヤから製品を購入 Pとある価格でそれらを販売したり、配布 R%よりも高い だけの小売業者は、顧客に直面するだろうP.。サプライチェーンの各メンバーは、ルート業者以外は、正確に1つのサプライヤを有すると仮定される、およびNO供給サイクルは存在しません。
今、サプライチェーンを与え、あなたは、顧客は、いくつかの小売業者から期待できる最低価格を伝えることになっています。
入力仕様:
各入力ファイルには、1つのテストケースが含まれています。各場合について、最初の行は、3つの正の数値含ま: N(≤)、サプライチェーンのメンバの総数を(従ってそのIDは0から番号付けされている N - 1、及びルート供給者IDは0です)。 P、ルートサプライヤーによって与えられた価格。そして Rは、各代理店または小売店の価格増加のパーセント率。次いで、 N行は、それぞれ次の形式で販売代理店または小売店を説明し、次のとおりです。
K I ID [1] ID [2] ... ID [ KのI ]
ここで 、i番目の行、 K iが供給業者から製品を受け取る代理店または小売業者の総数であり 、Iは、次いで、これらのディストリビュータまたは小売業者のIDが続いています。 K jが0であることを意味ている j番目のメンバーが小売業者です。行のすべての数字は、スペースで区切られます。
出力仕様:
各テストケースの場合は、1行に、我々は小数点以下4桁まで正確にいくつかの小売業者、および最低の価格で販売する小売業者の数から期待できる最低価格を印刷します。二つの数値の間に1つのスペースがなければなりません。すべての価格を超えないことが保証されている 1。
サンプル入力:
10 1.80 1.00
3 2 3 5
1 9
1 4
1 7
0
2 6 1
1 8
0
0
0
サンプル出力:
1.8362 2
1の#include <iostreamの> 2の#include <ベクトル> 3の#include <キュー> 4の#include <cmath> 5 使って 名前空間STDを、 6 INTのN、M。 7 ダブルP、R。 8 INT メイン() 9 { 10 CIN >> N >> P >> R。 11 ベクトル<ベクトル< int型 >> 人。 12 のために(int型 I = 0 ; iがN <++ I) 13 { 14 CIN >> M。 ベクター< INT > TEMP(M)。 16 のためには、(int型 = Iを0 ; iがmを<; ++ I) 17 CIN >> TEMPを[I]。 18 people.push_back(TEMP)。 19 } 20 キュー< INT > ノード。 21 node.push(0 )。 22 のint NUM = 0、レベル= - 1 。 23 ながら(!node.empty()) 24 { 25 キュー< INT > Q。 26 ながら(!node.empty()) 27 { 28 のintルート= node.front()。 29 node.pop()。 30 のために(int型 I = 0 ; iが[ルート] .size()人<; ++ I) 31 q.push(人[ルート] [I])。 32 であれば(人[ルート] .size()== 0)// 零售商 33 NUM ++ 。 34 } 35 レベル++ 。 36 であれば(NUM> 0 ) 37 破ります; 38 ノード= Q。 39 } 40 のprintf(" %0.4F%D \ n "、P *はPOW((1 + R / 100 )、レベル)、NUM)。 41 リターン 0 ; 42 }