羅区P3183 [HAOI2016]食物連鎖

タイトル説明

図の最初の回答に示す小さなチェーンによると、食物網のエコシステムの概略図である。今、あなたは食べ物を探している、n及びm種のエネルギーの流れの関係を問います。

種名は、A1 b1a2のb2a3 B3のようなエネルギーのM字状流との間のnの関係に1から番号付けされている...... AM-1 AI AI BIは種からのエネルギーの流れを表し、BM-1AMのBM

種BI、分離された個々の注目は、生物の食物連鎖ではありません。

入力形式

二つの整数n及びmの最初の行は、各列の次の2つの行が双方向整数m及びmは、エネルギーの流れとの間の関係を記述する愛。(データは、入力データシンボルの生物学的特性を確保し、しません

)エネルギーの流れ関係を複製する1 <= N <= 100000 0 <= M <= 200000タイトル答え保証バーストないINT

出力フォーマット

食物網における食物連鎖の数である整数

 

問題の解決策:対象のDP DAGのエントリは、問題解決のほとんどは偉大なを見つけるために、ゼロ点の程度を調べるために食物連鎖を見つけるための検索のバージョンであるメモリであり、

食物連鎖、私はそれがDAGであるため、qbxt zhhxギャングが、それを維持するためにキューに、再帰バージョンの配列を書き書きましたので、食物連鎖の各ポイントの数は、それはすべての前のノードであります

ゼロ度の食物連鎖、無処理時間、程度のマイナス1の数の後、転送に代わって完全にされてきた、最終カウントは、最後の点への答えである、すべての食物連鎖のためにゼロです。

ターンテーブル伝達方程式:

 

 

1の#include <cstdioを>
 2の#include <iostreamの>
 3の#include <CStringの>
 4の#include <アルゴリズム>
 5の#include <キュー>
 6  の#define MAXN 100005
 7  
8  使用して 名前空間STDを、
9  
10  構造体ノード
 11  {
 12      のint 編、NXT。
13  }。
14ノードのエッジ[ 200005 ]。
15  INT IND [MAXN]、最初の[MAXN]、DP [MAXN]、N、M、CNT。
16  INT  アウト[MAXN]。
17  
18インラインボイド add_edge(INT S、INT E)
 19  {
 20      CNT ++ 21      エッジ【CNTは] = .ED Eと、
22      エッジ= [CNT] .nxt 最初の[S]。
23      最初の[S] = CNT。
24      リターン;
25  }
 26  
27キュー< INT > Q。
28  
29  のint main()の
 30  {
 31      のscanf(" %D%dの"、&​​N、&M)。
32      のためにint型 I =1 ; I <= M; iは++ 33      {
 34個         のint S、E。
35          のscanf(" %D%dの"、&​​S&E)。
36          add_edge(S、E)。
37          IND [E] ++ ;
38          アウト [S] ++ ;
39      }
 40      のためのint型 i = 1 ; iがn = <; iは++ 41          であれば(IND [I] == 0 42          {
 43             であればアウト [i])とDP [I] = 1 44            q.push(I);
45          }
 46      ながら(!q.empty())
 47      {
 48          のint p = q.front()。q.pop();
49          のためにint型 I =最初の[P]を、I; I = エッジ[I] .nxt)
 50          {
 51              INT E = エッジ[i]は.ED。
52              DP [E] + = DP [P]。IND [E] - 53              であれば(IND [E] == 0 )q.push(E); 
54          }
 55      }
 56      INT ANS = 0 57      のためにintです i = 1 ; iが<= N; iは++ 58          であればアウト [I] == 0)ANS + = DP [I]。
59      のprintf(" %dの" 、ANS)。
60      リターン 0 ;
61 }

 

おすすめ

転載: www.cnblogs.com/Hoyoak/p/11432166.html