#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
using ll = long long;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int k, n1;
cin >> k >> n1;
vector<vector<int>> parent(k + 1);
vector<vector<ll>> weights(k + 1);
weights[1].resize(n1 + 1, 0);
for(int i = 2; i <= k; i++){
int ni;
cin >> ni;
parent[i].resize(ni + 1);
weights[i].resize(ni + 1, 0);
for(int j = 1; j <= ni; j++) cin >> parent[i][j];
}
for(int i = k; i >= 1; i--){
for(int j = 1; j < weights[i].size(); j++){
if(weights[i][j] == 0) weights[i][j] = 1;
if(i > 1 && parent[i][j] > 0) weights[i - 1][parent[i][j]] += weights[i][j];
}
}
ll max_p = 0;
for(int i = 1; i <= k; ++i){
ll suma_dnia = 0;
for(int j = 1; j < weights[i].size(); j++) suma_dnia += weights[i][j];
max_p = max(max_p, suma_dnia);
}
cout << max_p << '\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 | #include <iostream> #include <vector> #include <algorithm> using namespace std; using ll = long long; int main() { ios_base::sync_with_stdio(false); cin.tie(0); int k, n1; cin >> k >> n1; vector<vector<int>> parent(k + 1); vector<vector<ll>> weights(k + 1); weights[1].resize(n1 + 1, 0); for(int i = 2; i <= k; i++){ int ni; cin >> ni; parent[i].resize(ni + 1); weights[i].resize(ni + 1, 0); for(int j = 1; j <= ni; j++) cin >> parent[i][j]; } for(int i = k; i >= 1; i--){ for(int j = 1; j < weights[i].size(); j++){ if(weights[i][j] == 0) weights[i][j] = 1; if(i > 1 && parent[i][j] > 0) weights[i - 1][parent[i][j]] += weights[i][j]; } } ll max_p = 0; for(int i = 1; i <= k; ++i){ ll suma_dnia = 0; for(int j = 1; j < weights[i].size(); j++) suma_dnia += weights[i][j]; max_p = max(max_p, suma_dnia); } cout << max_p << '\n'; return 0; } |
English