#include <iostream>
#include <vector>
using namespace std;
int main() {
cin.tie(0)->sync_with_stdio(0);
int k,n;
cin >> k >> n;
vector<long> tab[k]; vector<int> ref[k];
tab->resize(n);
ref->resize(n);
for (int i=1;i<k;++i) {
cin >> n;
tab[i].resize(n);
while (n--)cin>>ref[i].emplace_back();
}
long maxsum=0;
for (int i=k-1;i>=0;--i) {
long sum=0;
for (int j=0;j<tab[i].size();++j) {
sum+=(tab[i][j]=max(1l,tab[i][j]));
if (ref[i][j]) tab[i-1][ref[i][j]-1]+=tab[i][j];
}
if (sum>maxsum) maxsum=sum;
}
cout << maxsum;
}
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 | #include <iostream> #include <vector> using namespace std; int main() { cin.tie(0)->sync_with_stdio(0); int k,n; cin >> k >> n; vector<long> tab[k]; vector<int> ref[k]; tab->resize(n); ref->resize(n); for (int i=1;i<k;++i) { cin >> n; tab[i].resize(n); while (n--)cin>>ref[i].emplace_back(); } long maxsum=0; for (int i=k-1;i>=0;--i) { long sum=0; for (int j=0;j<tab[i].size();++j) { sum+=(tab[i][j]=max(1l,tab[i][j])); if (ref[i][j]) tab[i-1][ref[i][j]-1]+=tab[i][j]; } if (sum>maxsum) maxsum=sum; } cout << maxsum; } |
English