#include <iostream>
#include <vector>
#include <unordered_map>
struct Day {
std::vector<int> dependencies;
Day(std::vector<int> _dependencies) : dependencies(_dependencies) {}
};
int main() {
int k, conferences;
std::cin >> k >> conferences;
std::vector<Day> days;
days.emplace_back(std::vector<int>(conferences, 0));
for (int i = 1; i < k; i++) {
int n;
std::cin >> n;
std::vector<int> deps(n);
for (int j = 0; j < n; j++) {
std::cin >> deps[j];
}
days.emplace_back(deps);
}
long long result = 0;
std::unordered_map<int, long long> confs, next_confs;
for (int i = k - 1; i >= 0; --i) {
for (int j = 1; j <= days[i].dependencies.size(); j++) {
confs[j] = std::max(confs[j], 1LL);
}
long long needed = 0;
for (int j = 1; j <= days[i].dependencies.size(); j++) {
needed += confs[j];
}
result = std::max(result, needed);
for (int j = 0; j < days[i].dependencies.size(); j++) {
if (days[i].dependencies[j] > 0) {
next_confs[days[i].dependencies[j]] += confs[j + 1];
}
}
confs.clear();
for (auto const [k,v]: next_confs) {
confs[k] = v;
}
next_confs.clear();
}
std::cout << result << '\n';
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 52 53 | #include <iostream> #include <vector> #include <unordered_map> struct Day { std::vector<int> dependencies; Day(std::vector<int> _dependencies) : dependencies(_dependencies) {} }; int main() { int k, conferences; std::cin >> k >> conferences; std::vector<Day> days; days.emplace_back(std::vector<int>(conferences, 0)); for (int i = 1; i < k; i++) { int n; std::cin >> n; std::vector<int> deps(n); for (int j = 0; j < n; j++) { std::cin >> deps[j]; } days.emplace_back(deps); } long long result = 0; std::unordered_map<int, long long> confs, next_confs; for (int i = k - 1; i >= 0; --i) { for (int j = 1; j <= days[i].dependencies.size(); j++) { confs[j] = std::max(confs[j], 1LL); } long long needed = 0; for (int j = 1; j <= days[i].dependencies.size(); j++) { needed += confs[j]; } result = std::max(result, needed); for (int j = 0; j < days[i].dependencies.size(); j++) { if (days[i].dependencies[j] > 0) { next_confs[days[i].dependencies[j]] += confs[j + 1]; } } confs.clear(); for (auto const [k,v]: next_confs) { confs[k] = v; } next_confs.clear(); } std::cout << result << '\n'; return 0; } |
English