#include <bits/stdc++.h>
#define ll long long
#define fir first
#define sec second
using namespace std;
ll x,y;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>x>>y;
vector<vector<ll>> suma(x+1);
vector<vector<int>> rodzic(x+1);
suma[1].assign(y+1,0);
rodzic[1].assign(y+1,0);
int pomoc,pomoc2;
for(int i=2;i<=x;i++){
cin>>pomoc;
suma[i].assign(pomoc+1,0);
rodzic[i].assign(pomoc+1,0);
for(int j=1;j<=pomoc;j++){
cin>>pomoc2;
rodzic[i][j]=pomoc2;
}
}
ll odp=0;
for(int i=x;i>=1;i--){
ll dzis=0;
int liczba_spotkan=suma[i].size();
for(int j=1;j<liczba_spotkan;j++){
ll liczba=max(1LL,suma[i][j]);
dzis+=liczba;
if(rodzic[i][j]!=0){
suma[i-1][rodzic[i][j]]+=liczba;
}
}
odp=max(dzis,odp);
}
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 43 44 45 | #include <bits/stdc++.h> #define ll long long #define fir first #define sec second using namespace std; ll x,y; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin>>x>>y; vector<vector<ll>> suma(x+1); vector<vector<int>> rodzic(x+1); suma[1].assign(y+1,0); rodzic[1].assign(y+1,0); int pomoc,pomoc2; for(int i=2;i<=x;i++){ cin>>pomoc; suma[i].assign(pomoc+1,0); rodzic[i].assign(pomoc+1,0); for(int j=1;j<=pomoc;j++){ cin>>pomoc2; rodzic[i][j]=pomoc2; } } ll odp=0; for(int i=x;i>=1;i--){ ll dzis=0; int liczba_spotkan=suma[i].size(); for(int j=1;j<liczba_spotkan;j++){ ll liczba=max(1LL,suma[i][j]); dzis+=liczba; if(rodzic[i][j]!=0){ suma[i-1][rodzic[i][j]]+=liczba; } } odp=max(dzis,odp); } cout<<odp; } |
English