#include <cstdio>
#include <vector>
using namespace std;
int main () {
int k, n1, i, ni, j, p, res, s;
scanf("%d %d", &k, &n1);
vector<vector<pair<int, int> > > days;
days.reserve(k + 8);
days.push_back(vector<pair<int, int> >(n1, make_pair(0, 0)));
for (i = 1; i < k; ++i) {
days.push_back(vector<pair<int, int> >());
scanf("%d", &ni);
for (j = 0; j < ni; ++j) {
scanf("%d", &p);
days[i].push_back(make_pair(p, 0));
}
}
res = 0;
for (i = k - 1; i >= 0; --i) {
s = 0;
for (j = 0; j < days[i].size(); ++j) {
if (days[i][j].second == 0) {
days[i][j].second = 1;
}
if (days[i][j].first) {
days[i - 1][days[i][j].first - 1].second += days[i][j].second;
}
s += days[i][j].second;
}
if (s > res) {
res = s;
}
}
printf("%d\n", res);
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 | #include <cstdio> #include <vector> using namespace std; int main () { int k, n1, i, ni, j, p, res, s; scanf("%d %d", &k, &n1); vector<vector<pair<int, int> > > days; days.reserve(k + 8); days.push_back(vector<pair<int, int> >(n1, make_pair(0, 0))); for (i = 1; i < k; ++i) { days.push_back(vector<pair<int, int> >()); scanf("%d", &ni); for (j = 0; j < ni; ++j) { scanf("%d", &p); days[i].push_back(make_pair(p, 0)); } } res = 0; for (i = k - 1; i >= 0; --i) { s = 0; for (j = 0; j < days[i].size(); ++j) { if (days[i][j].second == 0) { days[i][j].second = 1; } if (days[i][j].first) { days[i - 1][days[i][j].first - 1].second += days[i][j].second; } s += days[i][j].second; } if (s > res) { res = s; } } printf("%d\n", res); return 0; } |
English