#include<iostream>
#include <vector>
using namespace std;
vector<int> tab[500'007];
vector<int> ile[500'007];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, p, p2, odp=0;
cin>>n>>p;
for(int a=0; a<p; a++){
tab[0].push_back(0);
ile[0].push_back(1);
}
for(int a=1; a<n; a++)
{
cin>>p;
for(int i=0; i<p; i++){
cin>>p2;
tab[a].push_back(p2-1);
ile[a].push_back(1);
}
}
for(int a=n-1; a>=0; a--){
p=0;
for(int i=0; i<ile[a].size(); i++){
if(ile[a][i]>1)
ile[a][i]--;
p+=ile[a][i];
}
odp=max(odp,p);
for(int i=0; i<tab[a].size(); i++)
if(a>0 && tab[a][i]>=0)
ile[a-1][tab[a][i]]+=ile[a][i];
}
cout<<odp;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include<iostream> #include <vector> using namespace std; vector<int> tab[500'007]; vector<int> ile[500'007]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, p, p2, odp=0; cin>>n>>p; for(int a=0; a<p; a++){ tab[0].push_back(0); ile[0].push_back(1); } for(int a=1; a<n; a++) { cin>>p; for(int i=0; i<p; i++){ cin>>p2; tab[a].push_back(p2-1); ile[a].push_back(1); } } for(int a=n-1; a>=0; a--){ p=0; for(int i=0; i<ile[a].size(); i++){ if(ile[a][i]>1) ile[a][i]--; p+=ile[a][i]; } odp=max(odp,p); for(int i=0; i<tab[a].size(); i++) if(a>0 && tab[a][i]>=0) ile[a-1][tab[a][i]]+=ile[a][i]; } cout<<odp; } |
English