#include<cstdio>
#include<vector>
using namespace std;
int main() {
long days, firstMeetNum;
scanf("%ld %ld\n", &days, &firstMeetNum);
vector<vector<long> > meetings(days);
vector<vector<long> > attendees(days);
vector<long> firstMeetings(firstMeetNum, 0);
meetings[0] = firstMeetings;
vector<long> firstAttendees(firstMeetNum, 0);
attendees[0] = firstAttendees;
for (long i = 1; i < days; i++) {
long dayMeetingsNum;
scanf("%ld", &dayMeetingsNum);
vector<long> dayMeetings(dayMeetingsNum);
vector<long> dayAttendees(dayMeetingsNum, 0);
for (long j = 0; j < dayMeetingsNum; j++) {
scanf(" %ld", &dayMeetings[j]);
}
meetings[i] = dayMeetings;
attendees[i] = dayAttendees;
}
long maxAttendees = 0;
for (long i = days - 1; i >= 0; i--) {
vector<long> dayMeetings = meetings[i];
vector<long> dayAttendees = attendees[i];
long attendeesNum = 0;
for (unsigned int j = 0; j < dayAttendees.size(); j++) {
if (dayAttendees[j] == 0) {
dayAttendees[j] = 1;
}
attendeesNum += dayAttendees[j];
}
if (attendeesNum > maxAttendees) {
maxAttendees = attendeesNum;
}
if (i > 0) {
for (unsigned int j = 0; j < dayAttendees.size(); j++) {
long prevMeeting = dayMeetings[j];
if (prevMeeting != 0) {
attendees[i - 1][prevMeeting - 1] += dayAttendees[j];
}
}
}
}
printf("%ld\n", maxAttendees);
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 | #include<cstdio> #include<vector> using namespace std; int main() { long days, firstMeetNum; scanf("%ld %ld\n", &days, &firstMeetNum); vector<vector<long> > meetings(days); vector<vector<long> > attendees(days); vector<long> firstMeetings(firstMeetNum, 0); meetings[0] = firstMeetings; vector<long> firstAttendees(firstMeetNum, 0); attendees[0] = firstAttendees; for (long i = 1; i < days; i++) { long dayMeetingsNum; scanf("%ld", &dayMeetingsNum); vector<long> dayMeetings(dayMeetingsNum); vector<long> dayAttendees(dayMeetingsNum, 0); for (long j = 0; j < dayMeetingsNum; j++) { scanf(" %ld", &dayMeetings[j]); } meetings[i] = dayMeetings; attendees[i] = dayAttendees; } long maxAttendees = 0; for (long i = days - 1; i >= 0; i--) { vector<long> dayMeetings = meetings[i]; vector<long> dayAttendees = attendees[i]; long attendeesNum = 0; for (unsigned int j = 0; j < dayAttendees.size(); j++) { if (dayAttendees[j] == 0) { dayAttendees[j] = 1; } attendeesNum += dayAttendees[j]; } if (attendeesNum > maxAttendees) { maxAttendees = attendeesNum; } if (i > 0) { for (unsigned int j = 0; j < dayAttendees.size(); j++) { long prevMeeting = dayMeetings[j]; if (prevMeeting != 0) { attendees[i - 1][prevMeeting - 1] += dayAttendees[j]; } } } } printf("%ld\n", maxAttendees); return 0; } |
English