#include <bits/stdc++.h>
using namespace std;
#define int long long
struct S{
S() : dep(0), count(0) { };
S(int d) : dep(d) { };
int dep, count;
};
signed main(){
ios::sync_with_stdio(0);
cin.tie(nullptr);
int k, n;
cin>>k>>n;
vector < vector <S> > meetings(k);
meetings[0] = vector <S> (n);
for(int i = 0; i < k - 1; i++){
cin>>n;
meetings[i + 1].resize(n);
for(int j = 0; j < n; j++)
cin>>meetings[i + 1][j].dep;
}
for(auto& i : meetings.back())
i.count = 1;
int reserve = 0;
for(int i = k - 1; i > 0; i--){
for(auto& j : meetings[i]){
if(j.dep == 0)
reserve += j.count;
else
meetings[i - 1][j.dep - 1].count += j.count;
}
for(auto& j : meetings[i - 1]){
if(j.count == 0){
j.count = 1;
if(reserve)
reserve--;
}
}
}
int ANS = reserve;
for(auto& i : meetings[0])
ANS += i.count;
cout<<ANS;
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 75 76 77 78 | #include <bits/stdc++.h> using namespace std; #define int long long struct S{ S() : dep(0), count(0) { }; S(int d) : dep(d) { }; int dep, count; }; signed main(){ ios::sync_with_stdio(0); cin.tie(nullptr); int k, n; cin>>k>>n; vector < vector <S> > meetings(k); meetings[0] = vector <S> (n); for(int i = 0; i < k - 1; i++){ cin>>n; meetings[i + 1].resize(n); for(int j = 0; j < n; j++) cin>>meetings[i + 1][j].dep; } for(auto& i : meetings.back()) i.count = 1; int reserve = 0; for(int i = k - 1; i > 0; i--){ for(auto& j : meetings[i]){ if(j.dep == 0) reserve += j.count; else meetings[i - 1][j.dep - 1].count += j.count; } for(auto& j : meetings[i - 1]){ if(j.count == 0){ j.count = 1; if(reserve) reserve--; } } } int ANS = reserve; for(auto& i : meetings[0]) ANS += i.count; cout<<ANS; return 0; } |
English