Cho một cây khối như ở phần truy vấn phạm vi tĩnh: n khối đánh số 1..n, khối 1 là gốc, mỗi khối i (i≥2) có cha pi<i, và mỗi khối có một danh sách tên biến khai báo trực tiếp (không trùng tên trong cùng một khối).
Với mỗi khối i, định nghĩa tập biến khả kiến (visible) tại i là tập hợp mọi tên biến được khai báo trực tiếp tại i hoặc tại bất kỳ khối tổ tiên nào của i (kể cả khối gốc) — theo đúng luật phạm vi tĩnh, một tên có thể được khai báo lại (che khuất) ở nhiều khối khác nhau trên cùng đường đi, nhưng khi đếm số lượng tên phân biệt khả kiến thì mỗi tên chỉ được tính một lần dù nó xuất hiện ở bao nhiêu khối tổ tiên.
Với mỗi khối i từ 1 đến n, hãy in ra số lượng tên biến phân biệt khả kiến tại khối i.
Ví dụ: cây gồm 5 khối: khối 1 (gốc) khai báo x; khối 2 (cha 1) khai báo y; khối 3 (cha 2) khai báo x (che khối 1); khối 4 (cha 1) không khai báo gì; khối 5 (cha 3) khai báo z. Khi đó: khối 1 khả kiến {x} (1 tên); khối 2 khả kiến {x,y} (2 tên); khối 3 khả kiến {x,y} (2 tên, vì x dù được khai lại vẫn chỉ tính một lần); khối 4 khả kiến {x} (1 tên); khối 5 khả kiến {x,y,z} (3 tên). Kết quả in ra 5 dòng: 1 2 2 1 3.
Dòng đầu tiên chứa số nguyên n (1≤n≤5000). n dòng tiếp theo, dòng thứ i mô tả khối i: gồm pi (chỉ số khối cha, quy ước p1=0), ki (số biến khai báo trực tiếp), và ki tên biến cách nhau bởi khoảng trắng.
In ra n dòng, dòng thứ i là số lượng tên biến phân biệt khả kiến tại khối i (với i chạy từ 1 đến n).
Ví dụ:
Đầu vào:
1
0 0
Đầu ra:
0
Đầu vào:
5
0 1 x
1 1 y
2 1 x
1 0
3 1 z
Đầu ra:
1
2
2
1
3
Đang tải editor...