#include <bits/stdc++.h>
using namespace std;
const int maxN = 500002;
int k;
vector <int> meetings[maxN];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int n1;
cin >> k >> n1;
for (int j = 0; j < n1; j++) {
meetings[1].push_back(0);
}
for (int i = 2; i <= k; i++) {
int ni;
cin >> ni;
for (int j = 1; j <= ni; j++) {
int a;
cin >> a;
meetings[i].push_back(a);
}
}
int maxi = 0;
unordered_map<int, int> continuations;
for (int i = k; i >= 1; i--) {
int min_people = 0;
for (int j = 1; j <= (int)meetings[i].size(); j++) {
min_people += max(1, continuations[j]);
}
maxi = max(maxi, min_people);
unordered_map<int, int> new_continuations;
for (int j = 1; j <= (int)meetings[i].size(); j++) {
if (meetings[i][j - 1] > 0) {
new_continuations[meetings[i][j - 1]] += max(1, continuations[j]);
}
}
continuations = new_continuations;
}
cout << maxi << endl;
}
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 | #include <bits/stdc++.h> using namespace std; const int maxN = 500002; int k; vector <int> meetings[maxN]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); int n1; cin >> k >> n1; for (int j = 0; j < n1; j++) { meetings[1].push_back(0); } for (int i = 2; i <= k; i++) { int ni; cin >> ni; for (int j = 1; j <= ni; j++) { int a; cin >> a; meetings[i].push_back(a); } } int maxi = 0; unordered_map<int, int> continuations; for (int i = k; i >= 1; i--) { int min_people = 0; for (int j = 1; j <= (int)meetings[i].size(); j++) { min_people += max(1, continuations[j]); } maxi = max(maxi, min_people); unordered_map<int, int> new_continuations; for (int j = 1; j <= (int)meetings[i].size(); j++) { if (meetings[i][j - 1] > 0) { new_continuations[meetings[i][j - 1]] += max(1, continuations[j]); } } continuations = new_continuations; } cout << maxi << endl; } |
English