#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
class Konferencja{
public:
vector<vector<int>>meetings;
int days_nmb;
Konferencja(int days_nmb = 1, int first_day = 0){ init(days_nmb, first_day); }
void init(int days_nmb_, int first_day_){
days_nmb = days_nmb_;
meetings.assign(days_nmb, {});
meetings[0] = vector<int>(first_day_, 0);
}
void set_meetins_day(int d, int n){
meetings[d].assign(n, 0);
}
void add_meeting(int d, int m, int prev){
meetings[d][m] = prev;
}
int solve(){
int res = (int)meetings.back().size();
vector<vector<int>>how_many(days_nmb, vector<int>{});
how_many.back().assign( (int)meetings.back().size(), 1 );
for (int i = (int)meetings.size()-2; i >= 0; --i){
how_many[i].assign( (int)meetings[i].size(), 0 );
for(int j = 0; j < (int)meetings[i+1].size(); j++){
if( meetings[i+1][j] == -1 ) continue;
how_many[i][ meetings[i+1][j] ] += how_many[i+1][j];
}
int cur_res = 0;
for(int j = 0; j < (int)how_many[i].size(); j++){
how_many[i][j] = max(how_many[i][j], 1);
cur_res += how_many[i][j];
}
res = max(res, cur_res);
}
return res;
}
};
void solve(){
int k, n1, ni, p;
cin >> k >> n1;
Konferencja K(k, n1);
for(int i = 1; i < k; i++){
cin >> ni;
K.set_meetins_day(i, ni);
for(int j = 0; j < ni; j++){
cin >> p;
p--;
K.add_meeting(i, j, p);
}
}
cout << K.solve() << "\n";
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
}
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; typedef long long ll; class Konferencja{ public: vector<vector<int>>meetings; int days_nmb; Konferencja(int days_nmb = 1, int first_day = 0){ init(days_nmb, first_day); } void init(int days_nmb_, int first_day_){ days_nmb = days_nmb_; meetings.assign(days_nmb, {}); meetings[0] = vector<int>(first_day_, 0); } void set_meetins_day(int d, int n){ meetings[d].assign(n, 0); } void add_meeting(int d, int m, int prev){ meetings[d][m] = prev; } int solve(){ int res = (int)meetings.back().size(); vector<vector<int>>how_many(days_nmb, vector<int>{}); how_many.back().assign( (int)meetings.back().size(), 1 ); for (int i = (int)meetings.size()-2; i >= 0; --i){ how_many[i].assign( (int)meetings[i].size(), 0 ); for(int j = 0; j < (int)meetings[i+1].size(); j++){ if( meetings[i+1][j] == -1 ) continue; how_many[i][ meetings[i+1][j] ] += how_many[i+1][j]; } int cur_res = 0; for(int j = 0; j < (int)how_many[i].size(); j++){ how_many[i][j] = max(how_many[i][j], 1); cur_res += how_many[i][j]; } res = max(res, cur_res); } return res; } }; void solve(){ int k, n1, ni, p; cin >> k >> n1; Konferencja K(k, n1); for(int i = 1; i < k; i++){ cin >> ni; K.set_meetins_day(i, ni); for(int j = 0; j < ni; j++){ cin >> p; p--; K.add_meeting(i, j, p); } } cout << K.solve() << "\n"; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); } |
English