#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int k,n;
cin>>k>>n;
vector <vector<long long>> dni;
vector <vector<long long>> dp;
vector <vector<bool>> czylisc;
vector <long long> v;
vector<bool> v2;
for(int i=0; i<n; i++){
v.push_back(-1);
v2.push_back(false);
}
dni.push_back(v);
czylisc.push_back(v2);
for(int i=1; i<k; i++){
int ni;
cin>>ni;
v2.clear();
for(int j=0; j<ni; j++)
v2.push_back(false);
czylisc.push_back(v2);
v.clear();
for(int j=0; j<ni; j++){
int x;
cin>>x;
v.push_back(x-1);
if(x!=0)
czylisc[i-1][x-1]=true;
}
dni.push_back(v);
}
for(int i=0; i<k; i++){
v.clear();
for(int j=0; j<dni[i].size(); j++){
if(czylisc[i][j]==false){
v.push_back(1);
}
else
v.push_back(0);
}
dp.push_back(v);
}
for(int i=k-1; i>0; i--){
for(int j=0; j<dni[i].size(); j++){
if(dni[i][j]!=-1)
dp[i-1][dni[i][j]]+=dp[i][j];
}
}
long long wyn=0;
for(int i=0; i<k; i++){
long long sum=0;
for(int j=0; j<dp[i].size(); j++){
sum+=dp[i][j];
//cout<<dp[i][j]<<' ';
}
//cout<<'\n';
wyn=max(wyn,sum);
}
cout<<wyn;
}
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 | #include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int k,n; cin>>k>>n; vector <vector<long long>> dni; vector <vector<long long>> dp; vector <vector<bool>> czylisc; vector <long long> v; vector<bool> v2; for(int i=0; i<n; i++){ v.push_back(-1); v2.push_back(false); } dni.push_back(v); czylisc.push_back(v2); for(int i=1; i<k; i++){ int ni; cin>>ni; v2.clear(); for(int j=0; j<ni; j++) v2.push_back(false); czylisc.push_back(v2); v.clear(); for(int j=0; j<ni; j++){ int x; cin>>x; v.push_back(x-1); if(x!=0) czylisc[i-1][x-1]=true; } dni.push_back(v); } for(int i=0; i<k; i++){ v.clear(); for(int j=0; j<dni[i].size(); j++){ if(czylisc[i][j]==false){ v.push_back(1); } else v.push_back(0); } dp.push_back(v); } for(int i=k-1; i>0; i--){ for(int j=0; j<dni[i].size(); j++){ if(dni[i][j]!=-1) dp[i-1][dni[i][j]]+=dp[i][j]; } } long long wyn=0; for(int i=0; i<k; i++){ long long sum=0; for(int j=0; j<dp[i].size(); j++){ sum+=dp[i][j]; //cout<<dp[i][j]<<' '; } //cout<<'\n'; wyn=max(wyn,sum); } cout<<wyn; } |
English