#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int k,n1,N,a;
cin>>k>>n1;
vector< vector<int> > V,W;
vector<int> v;
for(int i=0; i<k; ++i) {
V.push_back(v);
W.push_back(v);
}
for(int j=0; j<n1; ++j) {
V[0].push_back(-1);
W[0].push_back(0);
}
for(int i=1; i<k; ++i) {
cin>>N;
for(int j=0; j<N; ++j) {
cin>>a;
V[i].push_back(a);
W[i].push_back(0);
}
}
for(int j=0; j<V[k-1].size(); ++j) {
W[k-1][j] = 1;
}
for(int i=k-1; i>0; --i) {
for(int j=0; j<V[i].size(); ++j) {
if(V[i][j] != 0) W[i-1][V[i][j] - 1] += W[i][j];
}
for(int j=0; j<V[i-1].size(); ++j) if(W[i-1][j] == 0) W[i-1][j] = 1;
}
int ans = 0;
for(int i=0; i<k; ++i) {
int S = 0;
for(int j=0; j<W[i].size(); ++j) S += W[i][j];
ans = max(ans,S);
}
cout<<ans<<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 | #include <vector> #include <algorithm> #include <iostream> using namespace std; int main() { int k,n1,N,a; cin>>k>>n1; vector< vector<int> > V,W; vector<int> v; for(int i=0; i<k; ++i) { V.push_back(v); W.push_back(v); } for(int j=0; j<n1; ++j) { V[0].push_back(-1); W[0].push_back(0); } for(int i=1; i<k; ++i) { cin>>N; for(int j=0; j<N; ++j) { cin>>a; V[i].push_back(a); W[i].push_back(0); } } for(int j=0; j<V[k-1].size(); ++j) { W[k-1][j] = 1; } for(int i=k-1; i>0; --i) { for(int j=0; j<V[i].size(); ++j) { if(V[i][j] != 0) W[i-1][V[i][j] - 1] += W[i][j]; } for(int j=0; j<V[i-1].size(); ++j) if(W[i-1][j] == 0) W[i-1][j] = 1; } int ans = 0; for(int i=0; i<k; ++i) { int S = 0; for(int j=0; j<W[i].size(); ++j) S += W[i][j]; ans = max(ans,S); } cout<<ans<<endl; return 0; } |
English