// PA 2024 1B - Konferencja
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Net {
long long back;
long long val;
Net(long long back, long long val) {
this->back = back;
this->val = val;
}
};
int main()
{
ios_base::sync_with_stdio(0);
long long k, n, a, res, bestRes;
cin >> k;
cin >> n;
vector<vector<Net>> meetings;
meetings.push_back(vector<Net>());
for (long long i = 0; i < n; ++i) {
meetings[0].push_back(Net(0, 0));
}
for (long long i = 1; i < k; ++i) {
meetings.push_back(vector<Net>());
cin >> n;
for (long long j = 0; j < n; ++j) {
cin >> a;
meetings[i].push_back(Net(a, 0));
}
}
for (long long i = k - 1; i > 0; --i) {
for (long long j = 0; j < meetings[i].size(); ++j) {
if (meetings[i][j].val == 0) {
meetings[i][j].val = 1;
}
if (meetings[i][j].back > 0) {
meetings[i - 1][meetings[i][j].back - 1].val += meetings[i][j].val;
}
}
}
for (long long i = 0; i < meetings[0].size(); ++i) {
if (meetings[0][i].val == 0) {
meetings[0][i].val = 1;
}
}
bestRes = 0;
for (long long i = 0; i < meetings.size(); ++i) {
res = 0;
for (long long j = 0; j < meetings[i].size(); ++j) {
//cout << meetings[i][j].val << " ";
res += meetings[i][j].val;
}
//cout << endl;
if (bestRes < res) {
bestRes = res;
}
}
cout << bestRes << endl;
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | // PA 2024 1B - Konferencja #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; struct Net { long long back; long long val; Net(long long back, long long val) { this->back = back; this->val = val; } }; int main() { ios_base::sync_with_stdio(0); long long k, n, a, res, bestRes; cin >> k; cin >> n; vector<vector<Net>> meetings; meetings.push_back(vector<Net>()); for (long long i = 0; i < n; ++i) { meetings[0].push_back(Net(0, 0)); } for (long long i = 1; i < k; ++i) { meetings.push_back(vector<Net>()); cin >> n; for (long long j = 0; j < n; ++j) { cin >> a; meetings[i].push_back(Net(a, 0)); } } for (long long i = k - 1; i > 0; --i) { for (long long j = 0; j < meetings[i].size(); ++j) { if (meetings[i][j].val == 0) { meetings[i][j].val = 1; } if (meetings[i][j].back > 0) { meetings[i - 1][meetings[i][j].back - 1].val += meetings[i][j].val; } } } for (long long i = 0; i < meetings[0].size(); ++i) { if (meetings[0][i].val == 0) { meetings[0][i].val = 1; } } bestRes = 0; for (long long i = 0; i < meetings.size(); ++i) { res = 0; for (long long j = 0; j < meetings[i].size(); ++j) { //cout << meetings[i][j].val << " "; res += meetings[i][j].val; } //cout << endl; if (bestRes < res) { bestRes = res; } } cout << bestRes << endl; return 0; } |
English