TOKEN

Anh Khôi là một giám đốc điều hành (CEO) của một công ty phần mềm rất lớn. Công ty của anh ấy có N người được đánh số thứ tự từ 1 đến N (CEO được đánh số thứ tự là 1). Để đơn giản trong việc quản lý và phân công công việc, mọi người trong công ty được phân cấp quản lý theo dạng hình cây. Với một người bất kỳ được quản lý trực tiếp bởi một người cao hơn (trừ CEO) và người đó cũng có thể quản lý một số người cấp dưới của mình. Những người không quản lý ai cả là những lập trình viên.

Anh Khôi vừa nhận được một dự án và cần phân công việc cho tất cả mọi người trong công ty. Khi một người nhận được một công việc từ người quản lý trực tiếp của mình (CEO chỉ nhận dự án từ đối tác) thì người này nhận được một đồng tiền ảo Token và người quản lý trực tiếp sẽ nhận được 2 Token, người quản lý cấp cao hơn kế tiếp nhận được 3 Token…, tiếp tục cho đến CEO là người nhận được số tiền nhiều nhất. Như vậy, khi những lập trình viên nhận công việc, họ chỉ có được 1 Token vì họ không phải là người quản lý nên không thể chia công việc cho những người khác mà phải tự thực hiện.

Yêu cầu: Hãy giúp anh Khôi tính số Token của mỗi người trong công ty sau khi công ty đã thực hiện xong dự án.

Dữ liệu vào: Từ tệp văn bản TOKEN.INP gồm hai dòng:

- Dòng đầu ghi số nguyên dương N (2 ≤ N ≤ 2.105);

- Dòng thứ hai ghi N - 1 số nguyên cách nhau một dấu cách, với số thứ i (i=1..N-1) là số thứ tự của người quản lý trực tiếp người thứ i+1.

Kết quả: Ghi ra tệp văn bản TOKEN.OUT N số nguyên trên một dòng, với số thứ i (i=1..N) là số Token của người thứ i nhận được. Giữa các số trên cùng dòng được ghi cách nhau đúng một dấu cách.

Ví dụ 1 Ví dụ 2
TOKEN.INP TOKEN.OUT TOKEN.INP TOKEN.OUT
3
1 1
5 1 1 5
1 2 2 4
13 8 1 3 1

Giải thích: Trong Ví dụ 1, CEO nhận công việc từ đối tác và được 1 Token. CEO phân công việc cho người thứ 2, người thứ 2 nhận được 1 Token, CEO nhận được 2 Token. CEO phân công việc cho người thứ 3, người thứ 3 nhận được 1 Token, CEO nhận được 2 Token. Như vậy tổng số Token của CEO là 1+2+2=5. Người thứ 2 và người thứ 3 chỉ nhận được 1 Token.

Giới hạn: + Có 50% số test với 2 ≤ N ≤ 5000.

+ Có 50% số test với 5000 < N ≤ 2.105).

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. sythai (5/8)
  2. npk1605 (5/10)
  3. trungnam (4/4)
Trong 7 ngày
  1. nguyenanhvu (40/64)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

Lưu Hải Phong - 2020
[email protected]