[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


LÀM BÀI

Points: 100
Time limit: 2.0s
Memory limit: 256M

Author:
Problem types

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-1 số p_2, p_3, ..., p_n, trong đó p_i là 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^5
  • 1 <= p_i < i sau 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

There are no comments at the moment.

Zalo