#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
int main(){
cin.tie(0)->sync_with_stdio(0);
int k,n;
cin >> k >> n;
vector<vi> meetings;
vector<vll> cnts;
vll spare;
meetings.push_back(vi(n));
cnts.push_back(vll(n));
spare.push_back(0);
while(--k){
cin >> n;
meetings.push_back(vi(n));
cnts.push_back(vll(n));
spare.push_back(0);
for(int &x : meetings.back())
cin >> x;
}
for(ll &cnt : cnts.back())
cnt = 1;
for(int i=meetings.size()-1; i>=1; --i){
ll prev_unemployed = 0;
ll cur_unemployed = 0;
for(int j=0; j<cnts[i].size(); ++j){
const int from = meetings[i][j];
if(from == 0){
cur_unemployed += cnts[i][j];
}else{
cnts[i-1][from-1] += cnts[i][j];
}
}
for(int j=0; j<cnts[i-1].size(); ++j){
if(cnts[i-1][j] == 0){
cnts[i-1][j] = 1;
prev_unemployed += 1;
}
}
spare[i-1] = max(0LL, spare[i] + cur_unemployed - prev_unemployed);
}
ll ans = spare[0];
for(auto &cnt : cnts[0])
ans += cnt;
cout << ans;
}
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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<ll> vll; int main(){ cin.tie(0)->sync_with_stdio(0); int k,n; cin >> k >> n; vector<vi> meetings; vector<vll> cnts; vll spare; meetings.push_back(vi(n)); cnts.push_back(vll(n)); spare.push_back(0); while(--k){ cin >> n; meetings.push_back(vi(n)); cnts.push_back(vll(n)); spare.push_back(0); for(int &x : meetings.back()) cin >> x; } for(ll &cnt : cnts.back()) cnt = 1; for(int i=meetings.size()-1; i>=1; --i){ ll prev_unemployed = 0; ll cur_unemployed = 0; for(int j=0; j<cnts[i].size(); ++j){ const int from = meetings[i][j]; if(from == 0){ cur_unemployed += cnts[i][j]; }else{ cnts[i-1][from-1] += cnts[i][j]; } } for(int j=0; j<cnts[i-1].size(); ++j){ if(cnts[i-1][j] == 0){ cnts[i-1][j] = 1; prev_unemployed += 1; } } spare[i-1] = max(0LL, spare[i] + cur_unemployed - prev_unemployed); } ll ans = spare[0]; for(auto &cnt : cnts[0]) ans += cnt; cout << ans; } |
English