Los ejemplos Valle P4017 : HTTPS: //www.luogu.com.cn/problem/P4017
Buscando el número máximo de la cadena alimenticia, el mayor problema se ha dado en la definición de la cadena alimentaria, la cadena se puede convertir en un punto de partida definido es el punto de 0 grados, un punto de grado 0 como el punto final. Tenga en cuenta la red de alimentos abstracta de un grafo dirigido puede tener más.
Idea: Sólo una vez clasificación topológica, registro acumulativo dinámica sus respuestas a la salida final al número máximo acumulado hasta el final de la cadena alimentaria.
plantilla:
1 bool toposort () { 2 Q = nueva cola (); 3 para (i = 0 ; i <n; i ++ ) 4 Si (in_deg [i] == 0 ) q.push (i); 5 ans = nuevo vector (); 6 , mientras que (! Q.empty ()) { 7 u = q.pop (); 8 ans.push_back (u); 9 para cada borde (u, v) { 10 si (--in_deg [v] == 0 ) q.push (v); 11 } 12 } 13 si (ans.size () == n) { 14 para (i = 0 ; i <n; i ++ ) 15 std :: cout << ans [i] << std :: endl; 16 volver verdadero ; 17 } demás { 18 de retorno falsa ; 19 } 20 }
Código de CA:
1 #include <bits / STDC ++ h.> 2 usando espacio de nombres std; 3 typedef largo largo ll; 4 const int maxN = 5E3 + 5 ; 5 const ll mod = 80112002 ; 6 struct nodo { 7 vector < int > v; 8 int en , hacia fuera ; 9 } g [maxN]; 10 int n, m; 11 ans ll [maxN]; 12 void add ( int u,int v) { 13 g [v] .v.push_back (u); 14 g [v]. fuera ++, g [u]. en ++ ; 15 } 16 void toposort () { 17 cola < int > q; 18 para ( int i = 1 ; i <= n; i ++) si (g [i]!. En ) q.push (i), ans [i] = 1 ; 19 , mientras que (! {Q.empty ()) 20 int cur = q.front (); 21 q.pop (); 22 para (int i = 0 ; i <g [cur] .v.size (); i ++ ) { 23 int u = g [cur] .v [i]; 24 ans [u] = (ans [u] + ans [cur])% mod; 25 Si (--g [u]. En == 0 q.push (u)); 26 } 27 } 28 } 29 int main () { 30 scanf ( " % d% d " , y n, y m); 31 para ( int i = 1 ; i <= m; i ++ ) { 32 int u, v; 33 scanf ( " % d% d " , & u, y v); 34 add (u, v); 35 } 36 toposort (); 37 res ll = 0 ; 38 para ( int i = 1 ; i <= n; i ++ ) { 39 si (g [i]!. Cabo ) res = (res + ans [i])% mod; 40 } 41 tribunal << res; 42 de retorno 0 ; 43 }