[Buổi 20][Cây cơ bản & DFS trên cây][WS] Bài 1: Sơ đồ nhân sự phân cấp
Sơ đồ nhân sự phân cấp
Bối cảnh và bài toán
Một tổ chức có n nhân sự được bố trí theo một cây quản lý có gốc. Nhân sự số 1 là người đứng đầu; mỗi nhân sự còn lại có đúng một quản lý trực tiếp. Hệ thống báo cáo cần biết, với từng người, có bao nhiêu nhân sự nằm trong toàn bộ nhánh quản lý bên dưới họ, không chỉ những người báo cáo trực tiếp.
Yêu cầu
Với mỗi nhân sự từ 1 đến n, hãy tính số hậu duệ của họ trong cây quản lý.
Input
- Dòng 1 chứa
n. - Dòng 2 chứa
n-1sốp_2, p_3, ..., p_n, trong đóp_ilà quản lý trực tiếp của nhân sựi.
Output
In n số; số thứ i là số nhân sự thuộc toàn bộ cây con bên dưới nhân sự i.
Ràng buộc
1 <= n <= 2 * 10^51 <= p_i < isau khi chuẩn hóa dữ liệu theo thứ tự cấp phát ID.
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | n <= 30 | 01–04 |
| S2 | 30% | n <= 5000 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
5
1 1 2 3
Output
4 1 1 0 0
Giải thích. Nhân sự 1 quản lý toàn bộ 4 người còn lại; nhân sự 2 và 3 mỗi người có một hậu duệ.
Ví dụ 2
Input
6
1 1 1 4 4
Output
5 0 0 2 0 0
Giải thích. Nút 4 có hai hậu duệ là 5 và 6.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M07-B20-WS01 |
| Buổi | B20 |
| Loại bài | WORKSHOP |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 40 phút |
| Time limit | 2 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++11 trở lên |
Nguồn: Phỏng theo CSES Problem Set – Subordinates.
Comments