CÔNG TY

Một công ty gồm \(N\) nhân viên được đánh số từ \(1\) tới \(N\). Người thứ \(i\) có lương là \(a_{i}\). Tổng giám đốc của công ty được đánh số là \(1\), mỗi người từ \(2\) tới \(N\) có đúng một cấp trên trực tiếp của mình.

Nếu người \(i\) là cấp trên trực tiếp của người \(j\), ta nói người \(i\) là quản lý của người \(j\). Nếu người \(i\) quản lý người \(j\) và người \(j\) quản lý người \(k\), ta cũng có thể nói người \(i\) là quản lý của người \(k\). Không có trường hợp người \(A\) là quản lý người \(B\) và người \(B\) là quản lý người \(A\).

Công ty có chế độ lương thưởng rất đặc biệt, vậy nên chưa chắc người có cấp bậc quản lý cao đã có lương cao hơn những người cấp dưới.

Nói cách khác, công ty này có mô hình dưới dạng một đồ thị cây gồm \(N\) đỉnh với gốc là đỉnh \(1\).

Công ty muốn tổ chức team building, tuy nhiên, nếu hai người \(u\)\(v\) tham gia mà \(u\) là quản lý của \(v\)\(a_{u} \leq a_{v}\) thì sẽ gây ra bất hòa (lương quản lý không cao hơn lương cấp dưới). Công ty muốn chọn ra được nhiều người tham gia team building nhất mà không có sự bất hòa nào.

8

4

2

1

7

3

Phòng tổ chức sự kiện đã lên \(Q\) giả định có dạng như sau:

  • Xét người \(u\ (1\ \leq \ u\ \leq \ N)\), sẽ cần chọn ra các nhân viên thuộc quyền quản lý của \(u\) (tính cả \(u\)) để tham gia team building.

  • Tìm cách chọn ra nhiều nhân viên nhất (có thể không chọn \(u\)) sao cho không gây ra sự bất hòa nào.

Yêu cầu: Với mỗi giả định, in ra số nhân viên nhiều nhất có thể chọn để tham gia team building.

Dữ liệu vào: từ tệp văn bản CONGTY.INP

  • Dòng đầu tiên chứa hai số nguyên dương \(N\)\(Q\ \left( 1\ \leq \ n,q\ \leq \ 2\ \times 10^{5} \right)\).

  • Dòng thứ hai gồm \(N\) số nguyên dương, số thứ \(i\)\(a_{i}\) miêu tả mức lương của người thứ \(i\) \(\left( 1\ \leq a_{i} \leq 10^{9} \right)\).

  • Dòng thứ ba gồm \(N - 1\) số nguyên dương, số thứ \(i\)\(p_{i}\), tức là người thứ \(i + 1\) sẽ có cấp trên trực tiếp là \(p_{i}\left( 1\ \leq \ p_{i} \leq \ N \right)\).

  • \(Q\) dòng tiếp theo, dòng thứ \(i\) gồm một số nguyên dương \(u_{i}\) \(\left( 1\ \leq \ u_{i} \leq \ N \right)\), miêu tả giả định thứ \(i\).

Kết quả: ghi ra tệp văn bản CONGTY.OUT:

+ Với mỗi giả định, in ra kết quả tương ứng.

Ràng buộc:

  • Có 15% số test thỏa mãn: \(n\ \leq \ 15,\ q\ = \ 1\).

  • Có 20% số test thỏa mãn: Nếu \(u\) là cấp trên của \(v\) thì \(a_{u} > \ a_{v}.\)

  • Có 15% số test thỏa mãn: Nhân viên thứ \(i\) là cấp trên của nhân viên thứ \(i + 1\), \(\forall i \in \lbrack 1,n - 1\rbrack\).

  • Có 15% số test thỏa mãn: \(N\ \leq \ 1000,\ a_{i} \leq \ 100\).

  • Có 20% số test thỏa mãn: \(N\ \leq \ 10^{5},\ a_{i} \leq \ 100\).

  • 15% số test còn lại không có ràng buộc gì thêm.

Ví dụ:

CONGTY.INP CONGTY.OUT Giải thích
6 3
8 4 2 7 1 3
1 1 3 2 3
1
3
4
5
2
1
- Với giả định thứ nhất, ta lấy tập nhân viên {1,2,5,4,6}.
- Với giả định thứ hai, ta lấy tập nhân viên {4,6}.
- Với giả định thứ ba, ta lấy tập nhân viên {4}.
6 2
7 5 6 4 3 1
1 1 3 3 5
3
1
4
6
- Với giả định thứ nhất, ta lấy tập nhân viên {3,4,5,6}.
- Với giả định thứ hai, ta lấy tập nhân viên {1,2,3,4,5,6}.

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]