#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <cstdlib>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
int out = 0;
vector<vector<pair<int,int>>> V(n);
for(int i = 0; i < m; i++){
V[0].push_back({0, 0});
}
int tab[500007];
tab[0] = m;
for(int i = 1; i < n; i++){
int x;
cin >> x;
tab[i] = x;
for(int j = 0; j < x; j++){
int y;
cin >> y;
V[i].push_back({y, 0});
}
}
for(int i = n-1 ; i >= 0; i--){
for(int j = 0; j < V[i].size(); j++){
if(i > 0){
if(V[i][j].first != 0){
V[i-1][V[i][j].first-1].second += max(V[i][j].second, 1);
}
}
if(V[i][j].second > 1){
tab[i] += V[i][j].second - 1;
}
}
out = max(out, tab[i]);
}
cout << out;
}
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 <iostream> #include <string> #include <algorithm> #include <vector> #include <cstdlib> using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; int out = 0; vector<vector<pair<int,int>>> V(n); for(int i = 0; i < m; i++){ V[0].push_back({0, 0}); } int tab[500007]; tab[0] = m; for(int i = 1; i < n; i++){ int x; cin >> x; tab[i] = x; for(int j = 0; j < x; j++){ int y; cin >> y; V[i].push_back({y, 0}); } } for(int i = n-1 ; i >= 0; i--){ for(int j = 0; j < V[i].size(); j++){ if(i > 0){ if(V[i][j].first != 0){ V[i-1][V[i][j].first-1].second += max(V[i][j].second, 1); } } if(V[i][j].second > 1){ tab[i] += V[i][j].second - 1; } } out = max(out, tab[i]); } cout << out; } |
English