//fast
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define all(x) x.begin(),x.end()
#define rep(n) for (int i = 0 ; i<n ; i++)
#define pb push_back
const int base = 5e5+7;
vector<int> ile[base];
vector<int> from[base];
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n,k;
cin >> k >> n;
k--;
ile[0].resize(n);
from[0].resize(n);
for (int i = 1 ; i<=k ; i++){
int ni;
cin >> ni;
from[i].resize(ni);
ile[i].resize(ni);
for (int j = 0 ; j<ni ; j++){
cin >> from[i][j];
}
}
int maks = 0;
for (int i = k ; i>=0 ; i--){
int pom = 0;
for (int j = 0 ; j<ile[i].size() ; j++){
if (ile[i][j]==0) ile[i][j]++;
pom+=ile[i][j];
if (from[i][j]!=0 && i!=0){
ile[i-1][from[i][j]-1]+=ile[i][j];
}
}
maks = max(pom,maks);
}
cout << maks << '\n';
}
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 | //fast #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define all(x) x.begin(),x.end() #define rep(n) for (int i = 0 ; i<n ; i++) #define pb push_back const int base = 5e5+7; vector<int> ile[base]; vector<int> from[base]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n,k; cin >> k >> n; k--; ile[0].resize(n); from[0].resize(n); for (int i = 1 ; i<=k ; i++){ int ni; cin >> ni; from[i].resize(ni); ile[i].resize(ni); for (int j = 0 ; j<ni ; j++){ cin >> from[i][j]; } } int maks = 0; for (int i = k ; i>=0 ; i--){ int pom = 0; for (int j = 0 ; j<ile[i].size() ; j++){ if (ile[i][j]==0) ile[i][j]++; pom+=ile[i][j]; if (from[i][j]!=0 && i!=0){ ile[i-1][from[i][j]-1]+=ile[i][j]; } } maks = max(pom,maks); } cout << maks << '\n'; } |
English