#include <bits/stdc++.h>
using namespace std;
vector<int> inputs[500010];
vector<int> requirements[500010];
int main() {
std::ios_base::sync_with_stdio(false);
int day_count, meeting_count;
cin >> day_count >> meeting_count;
for (int i = 0; i < meeting_count; i++) {
inputs[0].push_back(0);
requirements[0].push_back(0);
}
int cont;
for (int j = 1; j < day_count; j++) {
cin >> meeting_count;
for (int r = 0; r < meeting_count; r++) {
cin >> cont;
inputs[j].push_back(cont);
requirements[j].push_back(0);
}
}
//cout << "Input done" << endl;
for (int i = day_count - 1; i >= 0; i--) {
for (int j = 0; j < requirements[i].size(); j++) {
requirements[i][j] = max(requirements[i][j], 1);
}
for (int j = 0; j < inputs[i].size(); j++) {
if (inputs[i][j] != 0) {
requirements[i - 1][inputs[i][j] - 1] += requirements[i][j];
}
}
}
//cout << "Processing done" << endl;
int max_sum = 0;
int sum = 0;
for (int i = 0; i < day_count; i++) {
sum = 0;
for (int j = 0; j < requirements[i].size(); j++) {
sum += requirements[i][j];
}
if (sum > max_sum) {
max_sum = sum;
}
}
//cout << "Sum calc" << endl;
cout << max_sum << "\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 47 48 49 50 51 52 53 54 55 56 57 58 | #include <bits/stdc++.h> using namespace std; vector<int> inputs[500010]; vector<int> requirements[500010]; int main() { std::ios_base::sync_with_stdio(false); int day_count, meeting_count; cin >> day_count >> meeting_count; for (int i = 0; i < meeting_count; i++) { inputs[0].push_back(0); requirements[0].push_back(0); } int cont; for (int j = 1; j < day_count; j++) { cin >> meeting_count; for (int r = 0; r < meeting_count; r++) { cin >> cont; inputs[j].push_back(cont); requirements[j].push_back(0); } } //cout << "Input done" << endl; for (int i = day_count - 1; i >= 0; i--) { for (int j = 0; j < requirements[i].size(); j++) { requirements[i][j] = max(requirements[i][j], 1); } for (int j = 0; j < inputs[i].size(); j++) { if (inputs[i][j] != 0) { requirements[i - 1][inputs[i][j] - 1] += requirements[i][j]; } } } //cout << "Processing done" << endl; int max_sum = 0; int sum = 0; for (int i = 0; i < day_count; i++) { sum = 0; for (int j = 0; j < requirements[i].size(); j++) { sum += requirements[i][j]; } if (sum > max_sum) { max_sum = sum; } } //cout << "Sum calc" << endl; cout << max_sum << "\n"; } |
English