#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<vector>
#define N 500005
using namespace std;
vector<int> konferencja[N];
vector<int> osoby[N];
int main() {
int k, n;
int max = 0;
scanf("%d %d", &k, &n);
konferencja[0].resize(n, 0);
osoby[0].resize(n, 0);
for (int i = 2; i <= k; i++) {
scanf("%d", &n);
konferencja[i - 1].resize(n, 0);
osoby[i - 1].resize(n, 0);
for (int j = 0; j < n; j++) {
scanf("%d", &konferencja[i-1][j]);
}
}
for (int i = k - 1; i >= 0; i--) {
int suma = 0;
for (int j = 0; j < konferencja[i].size(); j++) {
if (osoby[i][j] == 0) {
osoby[i][j] = 1;
}
if (konferencja[i][j] > 0) {
osoby[i - 1][konferencja[i][j] - 1] += osoby[i][j];
}
suma += osoby[i][j];
}
if (suma > max) {
max = suma;
}
}
printf("%d\n", max);
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 39 40 41 42 43 44 45 46 47 48 49 50 51 | #define _CRT_SECURE_NO_WARNINGS #include<cstdio> #include<vector> #define N 500005 using namespace std; vector<int> konferencja[N]; vector<int> osoby[N]; int main() { int k, n; int max = 0; scanf("%d %d", &k, &n); konferencja[0].resize(n, 0); osoby[0].resize(n, 0); for (int i = 2; i <= k; i++) { scanf("%d", &n); konferencja[i - 1].resize(n, 0); osoby[i - 1].resize(n, 0); for (int j = 0; j < n; j++) { scanf("%d", &konferencja[i-1][j]); } } for (int i = k - 1; i >= 0; i--) { int suma = 0; for (int j = 0; j < konferencja[i].size(); j++) { if (osoby[i][j] == 0) { osoby[i][j] = 1; } if (konferencja[i][j] > 0) { osoby[i - 1][konferencja[i][j] - 1] += osoby[i][j]; } suma += osoby[i][j]; } if (suma > max) { max = suma; } } printf("%d\n", max); return 0; } |
English