#include <bits/stdc++.h>
#define ll long long
using namespace std;
void solve(){
int k, n; cin>>k>>n;
vector<vector<int>> vv;
vv.push_back(vector<int>(n, 0));
vector<vector<int>> days(k);
days[0] = vector<int>(n, 0);
for(int i=1; i<k; i++){
int ssize; cin>>ssize;
for(int j=0; j<ssize; j++){
int x; cin>>x;
days[i].push_back(x);
}
vv.push_back(vector<int>(ssize, 0));
}
int ans = 0, fre = 0;
for(int i=k-1; i>=1; i--){
int taken = 0;
for(auto e: vv[i]) taken += e;
fre = ans - taken;
int to_assign = 0;
for(auto e: vv[i]) if(e == 0) to_assign++;
int to_add = max(0, to_assign - fre);
ans += to_add;
for(int j=0; j<days[i].size(); j++){
if(vv[i][j] == 0) vv[i][j] = 1;
//cout<<i-1<<" "<<days[i][j]-1<<" "<<j<<endl;
if(days[i][j] != 0) vv[i-1][days[i][j]-1] += vv[i][j];
}
}
int taken = 0;
for(auto e: vv[0]) taken +=e;
fre = ans - taken;
int to_assign = 0;
for(auto e: vv[0]) if(e == 0) to_assign++;
int to_add = max(0, to_assign - fre);
ans += to_add;
cout<<ans<<'\n';
}
int main(){
ios_base::sync_with_stdio(0);
cout.tie(0); cin.tie(0);
int sets; sets=1;
while(sets--){
solve();
}
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 | #include <bits/stdc++.h> #define ll long long using namespace std; void solve(){ int k, n; cin>>k>>n; vector<vector<int>> vv; vv.push_back(vector<int>(n, 0)); vector<vector<int>> days(k); days[0] = vector<int>(n, 0); for(int i=1; i<k; i++){ int ssize; cin>>ssize; for(int j=0; j<ssize; j++){ int x; cin>>x; days[i].push_back(x); } vv.push_back(vector<int>(ssize, 0)); } int ans = 0, fre = 0; for(int i=k-1; i>=1; i--){ int taken = 0; for(auto e: vv[i]) taken += e; fre = ans - taken; int to_assign = 0; for(auto e: vv[i]) if(e == 0) to_assign++; int to_add = max(0, to_assign - fre); ans += to_add; for(int j=0; j<days[i].size(); j++){ if(vv[i][j] == 0) vv[i][j] = 1; //cout<<i-1<<" "<<days[i][j]-1<<" "<<j<<endl; if(days[i][j] != 0) vv[i-1][days[i][j]-1] += vv[i][j]; } } int taken = 0; for(auto e: vv[0]) taken +=e; fre = ans - taken; int to_assign = 0; for(auto e: vv[0]) if(e == 0) to_assign++; int to_add = max(0, to_assign - fre); ans += to_add; cout<<ans<<'\n'; } int main(){ ios_base::sync_with_stdio(0); cout.tie(0); cin.tie(0); int sets; sets=1; while(sets--){ solve(); } return 0; } |
English