#include <iostream>
#include <vector>
struct Konferencja
{
int numerPoprzedniej = -1;
int iloscKoniecznychOsob = 0;
};
struct Dzien
{
std::vector<Konferencja> konferencje;
};
int main()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
int iloscDni;
int n1;
std::cin >> iloscDni >> n1;
std::vector<Dzien> dni(iloscDni);
dni[0].konferencje.resize(n1);
for (int i = 1; i < iloscDni; ++i)
{
int iloscKonferencji;
std::cin >> iloscKonferencji;
dni[i].konferencje.resize(iloscKonferencji);
for (int j = 0; j < iloscKonferencji; ++j)
{
int poprzednia;
std::cin >> poprzednia;
dni[i].konferencje[j].numerPoprzedniej = poprzednia - 1;
}
}
int maxOsobPotrzebnych = 0;
for (int i = iloscDni - 1; i >= 0; --i)
{
int iloscPotrzebnych = 0;
for (int j = 0; j < dni[i].konferencje.size(); ++j)
{
iloscPotrzebnych += std::max(1, dni[i].konferencje[j].iloscKoniecznychOsob);
if (dni[i].konferencje[j].numerPoprzedniej != -1)
dni[i - 1].konferencje[dni[i].konferencje[j].numerPoprzedniej].iloscKoniecznychOsob += std::max(1, dni[i].konferencje[j].iloscKoniecznychOsob);
}
maxOsobPotrzebnych = std::max(iloscPotrzebnych, maxOsobPotrzebnych);
}
std::cout << maxOsobPotrzebnych << "\n";
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 | #include <iostream> #include <vector> struct Konferencja { int numerPoprzedniej = -1; int iloscKoniecznychOsob = 0; }; struct Dzien { std::vector<Konferencja> konferencje; }; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); int iloscDni; int n1; std::cin >> iloscDni >> n1; std::vector<Dzien> dni(iloscDni); dni[0].konferencje.resize(n1); for (int i = 1; i < iloscDni; ++i) { int iloscKonferencji; std::cin >> iloscKonferencji; dni[i].konferencje.resize(iloscKonferencji); for (int j = 0; j < iloscKonferencji; ++j) { int poprzednia; std::cin >> poprzednia; dni[i].konferencje[j].numerPoprzedniej = poprzednia - 1; } } int maxOsobPotrzebnych = 0; for (int i = iloscDni - 1; i >= 0; --i) { int iloscPotrzebnych = 0; for (int j = 0; j < dni[i].konferencje.size(); ++j) { iloscPotrzebnych += std::max(1, dni[i].konferencje[j].iloscKoniecznychOsob); if (dni[i].konferencje[j].numerPoprzedniej != -1) dni[i - 1].konferencje[dni[i].konferencje[j].numerPoprzedniej].iloscKoniecznychOsob += std::max(1, dni[i].konferencje[j].iloscKoniecznychOsob); } maxOsobPotrzebnych = std::max(iloscPotrzebnych, maxOsobPotrzebnych); } std::cout << maxOsobPotrzebnych << "\n"; return 0; } |
English