#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Date
{
public:
int day;
int month;
int year;
Date(){day=0;month=0;year=0;}
Date(int d,int m,int y){day=d;month=m;year=y;}
void Print(){std::cout<<day<<"-"<<month<<"-"<<year<< std::endl;}
};
class Student
{
public:
int id;
std::string name;
double gpa;
Date dob;
Student(){id=0;name="";gpa=0;}
Student(int i, std::string n, double g, Date d){ id = i; name = n; gpa = g; dob = d; }
void Print(){ std::cout << "id=" << id << ", name=" << name << ", gpa=" << gpa << ", DOB="; dob.Print(); }
};
class Department
{
public:
std::string name;
std::string chair;
std::vector<Student> students;
Department(std::string n = "", std::string c="" ) : name(n), chair(c) {}
void Print(){ std::cout << "Department=" << name << ", # of students=" << students.size()<< ", Chair=" << chair << std::endl; }
// void PrintStudents(){for(int i=0; i<numOfStudents; i++) students[i].Print();}
void AddStudent(Student s)
{ students.push_back(s); }
void DeleteStudent(int id){}
};
class College
{
public:
std::string name;
int numOfStudents;
std::string dean;
std::vector<Department> departments;
int numOfDepartments;
College(){name="";numOfStudents=0;dean="";numOfDepartments=0;}
College(std::string n, std::string d){ name = n; dean = d; numOfStudents = 0; numOfDepartments = 0; }
void Print(){ std::cout << "College=" << name << ", # of students=" << numOfStudents << ", Dean=" << dean << std::endl; }
void PrintDepartments(){for(int i=0; i<numOfDepartments; i++) departments[i].Print();}
void AddDepartment(Department s){departments.push_back(s);}
void DeleteDepartment(string name){}
};
class University
{
public:
string name;
int numOfStudents;
string rector;
std::vector<College> colleges;
int numOfColleges;
University(){name="";numOfStudents=0;rector="";numOfColleges=0;}
University(string n, string r){name=n;rector=r;numOfStudents=0;numOfColleges=0;}
void Print(){cout<<"University="<<name<<", # of students="<<numOfStudents<<", Rector="<<rector<<endl;}
void PrintColleges(){for(int i=0; i<numOfColleges; i++) colleges[i].Print();}
void AddCollege(College c){colleges[numOfColleges]=c;numOfColleges++;numOfStudents+=c.numOfStudents;}
void DeleteCollege(string name){}
};
int main()
{
cout << sizeof(University) << "\n";
cout << sizeof(College) << "\n";
cout << sizeof(Department);
}