#include <bits/stdc++.h>
using namespace std;
int main()
{
int k;
cin>>k;
vector<int> days(k);
vector<vector<int>> part;
cin>>days[0];
part.push_back(vector<int>(days[0],0));
vector<vector<int>> depe;
for(int i = 1; i < k; i ++)
{
cin>>days[i];
part.push_back(vector<int>(days[i],0));
depe.push_back(vector<int>(days[i],0));
for(int j = 0; j < days[i]; j ++)
{
cin>>depe[i-1][j];
}
}
long long res = 0;
for(int i = k-1; i >= 0; i --)
{
long long tmpmax = 0;
for(int j = 0; j < part[i].size(); j ++)
{
part[i][j] = max(part[i][j],1);
tmpmax += part[i][j];
}
if(i>0)
{
for(int j = 0; j < part[i].size(); j ++)
{
if(depe[i-1][j] > 0)
part[i-1][depe[i-1][j]-1] += part[i][j];
}
}
res = max(res, tmpmax);
}
cout<<res;
}
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 43 44 | #include <bits/stdc++.h> using namespace std; int main() { int k; cin>>k; vector<int> days(k); vector<vector<int>> part; cin>>days[0]; part.push_back(vector<int>(days[0],0)); vector<vector<int>> depe; for(int i = 1; i < k; i ++) { cin>>days[i]; part.push_back(vector<int>(days[i],0)); depe.push_back(vector<int>(days[i],0)); for(int j = 0; j < days[i]; j ++) { cin>>depe[i-1][j]; } } long long res = 0; for(int i = k-1; i >= 0; i --) { long long tmpmax = 0; for(int j = 0; j < part[i].size(); j ++) { part[i][j] = max(part[i][j],1); tmpmax += part[i][j]; } if(i>0) { for(int j = 0; j < part[i].size(); j ++) { if(depe[i-1][j] > 0) part[i-1][depe[i-1][j]-1] += part[i][j]; } } res = max(res, tmpmax); } cout<<res; } |
English