#include<bits/stdc++.h>
using namespace std;
vector<vector<long long> > v, prac;
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
long long k, n, a, wyn;
cin>>k>>n;
v.resize(k+1);
v[1].resize(n+1);
prac.resize(k+1);
for(int i=2; i<=k; i++) {
cin>>a;
v[i].resize(a+1);
for(int j=1; j<=a; j++) cin>>v[i][j];
}
wyn = v[k].size() - 1;
prac[k].resize(v[k].size(), 1);
for(int i=k-1; i>=1; i--) {
prac[i].resize(v[i].size(), 0);
for(int j=1; j<v[i+1].size(); j++) prac[i][v[i+1][j]] += prac[i+1][j];
a = 0;
for(int j=1; j<v[i].size(); j++) {
if(prac[i][j] == 0) prac[i][j] = 1;
a += prac[i][j];
}
wyn = max(wyn, a);
}
cout<<wyn;
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 | #include<bits/stdc++.h> using namespace std; vector<vector<long long> > v, prac; int main() { ios_base::sync_with_stdio(0); cin.tie(0); long long k, n, a, wyn; cin>>k>>n; v.resize(k+1); v[1].resize(n+1); prac.resize(k+1); for(int i=2; i<=k; i++) { cin>>a; v[i].resize(a+1); for(int j=1; j<=a; j++) cin>>v[i][j]; } wyn = v[k].size() - 1; prac[k].resize(v[k].size(), 1); for(int i=k-1; i>=1; i--) { prac[i].resize(v[i].size(), 0); for(int j=1; j<v[i+1].size(); j++) prac[i][v[i+1][j]] += prac[i+1][j]; a = 0; for(int j=1; j<v[i].size(); j++) { if(prac[i][j] == 0) prac[i][j] = 1; a += prac[i][j]; } wyn = max(wyn, a); } cout<<wyn; return 0; } |
English