質問の意味:食物連鎖の数を見つけ、あなたの食物網を与えます
解決策:
1.セットF(i)は、私は食物連鎖の最後の数(ここでは食物連鎖のは必ずしも完全なものではありません)です
。2.食物網を確立するプロセスでは、それぞれの種のために、種の数とその獲物を記録しますそれは、(i)とOUT(I)で表される捕食種の数であり、
3は、(i)生物学0、それらがキュー投げた初期化F [I] = 1で見つかった
前記第1のキューUは、その後、捕食者vの全てを列挙し、生物種を引き出すF [V] = F [V ] + F [U]。
5. Uは捨て、そう(v)はマイナス1でてきたので。もし、この時点で(v)のうち(v)は、食物連鎖の最後に来ANS(答)プラスFようました、それは最高の栄養段階であることを示し、また、ゼロの場合は0、キューに入れますが、この時間です[V]に
6.を繰り返し4,5-ステップ、キューが空になるまで
7出力回答
はO(n)の時間複雑性は、しかし、このアルゴリズムは、生物学的試験(ヘイズ)で有用であることを保証するものではありません
タイトルアドレスを:
HTTPS ://www.luogu.com.cn/problemnew/show/P4017
1.セットF(i)は、私は食物連鎖の最後の数(ここでは食物連鎖のは必ずしも完全なものではありません)です
。2.食物網を確立するプロセスでは、それぞれの種のために、種の数とその獲物を記録しますそれは、(i)とOUT(I)で表される捕食種の数であり、
3は、(i)生物学0、それらがキュー投げた初期化F [I] = 1で見つかった
前記第1のキューUは、その後、捕食者vの全てを列挙し、生物種を引き出すF [V] = F [V ] + F [U]。
5. Uは捨て、そう(v)はマイナス1でてきたので。もし、この時点で(v)のうち(v)は、食物連鎖の最後に来ANS(答)プラスFようました、それは最高の栄養段階であることを示し、また、ゼロの場合は0、キューに入れますが、この時間です[V]に
6.を繰り返し4,5-ステップ、キューが空になるまで
7出力回答
はO(n)の時間複雑性は、しかし、このアルゴリズムは、生物学的試験(ヘイズ)で有用であることを保証するものではありません
タイトルアドレスを:
HTTPS ://www.luogu.com.cn/problemnew/show/P4017
1の#include <ビット/ STDC ++ H> 2 の#defineは 80112002国防省 3を 使用して 名前空間STDを、 4 整数 N、M、U、V、CNT、ANS、ヘッド[ 5003 ] に [ 5003 ]、アウト [ 5003 ]、F [ 5003 ]。 5 構造体のエッジ{ 6 int型V、次。 7 } E [ 500005 ]。 8キュー< 整数 > Q; 9 ボイド追加(INT U、INT V){ 10 E [++ CNT] .V = V。 11 E [CNT] .next = 頭部[U]。 12 頭[U] = CNT。 13 アウト [U] ++ ; 14 で [V] ++ ; 15 } 16 INT メイン(){ 17の IOS :: sync_with_stdio(偽)。 18 CIN >> N >> M。 19 のために(INT iは= 1 ; iが<= M; I ++ ){ 20 CIN >> U >> V。 21 追加(U、V)。 22 } 23 のために(INTiは= 1 ; I <= N; I ++ ) 24 であれば(!で[i])と 25 F [I] = 1 、q.push(I)。 26 ながら(!{q.empty()) 27 INT U = q.front(); q.pop()。 28 のために(INT ; I iが= [U] iはヘッド= {E [I] .next) 29 のint V = E [I] .V。 30 F [V] =(F [V] + F [U])%のMOD。 31 で [V] - 。 32 であれば(で [V] == 0 ){ 33 であれば(アウト [V] == 0 ) 34 ANS =(ANS + [V])%のF MOD。 35 他q.push(V); 36 } 37 } 38 } 39 COUT << ANS。 40 }