#include <iostream>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int k, n; cin >> k >> n;
vector<vector<int>> spotkania (k);
vector<vector<int>> zapotrzebowanie (k);
int maksymalnyRozmiar = 0;
for (int i = 0; i < n; i++) {spotkania[0].push_back(0); zapotrzebowanie[0].push_back(1);}
for (int i = 1; i < k; i++) {
int liczbaSpotkan; cin >> liczbaSpotkan;
maksymalnyRozmiar = max(liczbaSpotkan, maksymalnyRozmiar);
for (int j = 0; j < liczbaSpotkan; j++) {
int s; cin >> s; spotkania[i].push_back(s);
zapotrzebowanie[i].push_back(1);
}
}
int wynik = 0;
for (int i = k - 2; i >= 0; i--) {
vector<int> zlicz (spotkania[i].size() + 1, 1);
for (int j = 0; j < spotkania[i + 1].size(); j++) {
zlicz[spotkania[i + 1][j]] += zapotrzebowanie[i + 1][j];
}
for (int j = 0; j < spotkania[i].size(); j++) {
zapotrzebowanie[i][j] = max(zlicz[j + 1] - 1, 1);
}
int suma = 0;
for (int j = 0; j < zapotrzebowanie[i].size(); j++) suma += zapotrzebowanie[i][j];
wynik = max(suma, wynik);
}
cout << wynik;
}
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 | #include <iostream> #include <vector> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int k, n; cin >> k >> n; vector<vector<int>> spotkania (k); vector<vector<int>> zapotrzebowanie (k); int maksymalnyRozmiar = 0; for (int i = 0; i < n; i++) {spotkania[0].push_back(0); zapotrzebowanie[0].push_back(1);} for (int i = 1; i < k; i++) { int liczbaSpotkan; cin >> liczbaSpotkan; maksymalnyRozmiar = max(liczbaSpotkan, maksymalnyRozmiar); for (int j = 0; j < liczbaSpotkan; j++) { int s; cin >> s; spotkania[i].push_back(s); zapotrzebowanie[i].push_back(1); } } int wynik = 0; for (int i = k - 2; i >= 0; i--) { vector<int> zlicz (spotkania[i].size() + 1, 1); for (int j = 0; j < spotkania[i + 1].size(); j++) { zlicz[spotkania[i + 1][j]] += zapotrzebowanie[i + 1][j]; } for (int j = 0; j < spotkania[i].size(); j++) { zapotrzebowanie[i][j] = max(zlicz[j + 1] - 1, 1); } int suma = 0; for (int j = 0; j < zapotrzebowanie[i].size(); j++) suma += zapotrzebowanie[i][j]; wynik = max(suma, wynik); } cout << wynik; } |
English