#include<bits/stdc++.h>
using namespace std;
const int MAX = 500005;
vector <int> G[MAX];
int suma[MAX];
int deg[MAX];
int T[MAX];
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n, k;
cin >> k >> n;
int ost=n;
int r=n;
int a, x;
for (int i=1; i<=n; i++) deg[i] = 1;
for (int dzien=2; dzien<=k; dzien++){
cin >> a;
for (int i=1; i<=a; i++){
cin >> x;
r++;
deg[r] = dzien;
if (x != 0){
G[r-i-ost+x].push_back(r);
}
}
ost = a;
}
int wyn = n;
for (int i=r; i>=1; i--){
int s=0;
for (int j : G[i]){
s += T[j];
}
if (s == 0) T[i] = 1;
else T[i] = s;
suma[deg[i]] += T[i];
}
for (int i=1; i<=k; i++){
wyn = max(wyn, suma[i]);
}
cout << wyn << "\n";
return 0;
}
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 46 47 48 49 50 51 52 53 54 55 56 57 58 | #include<bits/stdc++.h> using namespace std; const int MAX = 500005; vector <int> G[MAX]; int suma[MAX]; int deg[MAX]; int T[MAX]; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, k; cin >> k >> n; int ost=n; int r=n; int a, x; for (int i=1; i<=n; i++) deg[i] = 1; for (int dzien=2; dzien<=k; dzien++){ cin >> a; for (int i=1; i<=a; i++){ cin >> x; r++; deg[r] = dzien; if (x != 0){ G[r-i-ost+x].push_back(r); } } ost = a; } int wyn = n; for (int i=r; i>=1; i--){ int s=0; for (int j : G[i]){ s += T[j]; } if (s == 0) T[i] = 1; else T[i] = s; suma[deg[i]] += T[i]; } for (int i=1; i<=k; i++){ wyn = max(wyn, suma[i]); } cout << wyn << "\n"; return 0; } |
English