TRỒNG CÂY

Người ta gieo một số hạt xuống đất. Sau vài năm, những hạt đó trưởng thành, trở thành cây và mọc nhánh. Mỗi đoạn nhánh đều có trọng lượng khác nhau. Đôi khi, bão tới, mưa to gió lớn và công ty cây xanh phải cắt bỏ đi một phần nhánh cây.

Chúng ta sẽ mô phỏng điều này. Ban đầu, chúng ta có một cây có \(n\ = \ 1\) đỉnh, đỉnh gốc đó được đánh số 0. Chúng ta cũng có \(q\) truy vấn, mỗi truy vấn sẽ thực hiện một trong những hành động sau:

  • \(" + \ u"\ (0\ \leq \ u\ < \ n)\): Tạo đỉnh mới có nhãn đánh số \(i\ = \ n\), sau đó \(n\) tăng thêm 1 đơn vị. Nối đỉnh \(i\) vào đỉnh \(u\) và lúc này \(u\) sẽ là cha (tổ tiên trực tiếp) của \(i\).

  • \(" - \ u"\ (0\ \leq \ u\ < \ n)\): Xóa bỏ cây con gốc \(u\).

  • \("?\ u"\ (0 \leq u < n)\): Đếm và cho biết số lượng đỉnh trong cây con gốc \(u\), bao gồm chính đỉnh \(u\).

Với mỗi truy vấn loại 3, bạn hãy in ra kết quả của câu hỏi đó.

Dữ liệu vào:

  • Dòng đầu tiên gồm số \(q\ (1 \leq q \leq 10^{5})\).

  • \(q\) dòng tiếp theo, dòng thứ \(i\ \)lần lượt chứa ký tự \(c\) và số \(u\), cho biết nội dung của truy vấn. Đề bài đảm bảo các điều kiện sau tại ngay trước thời điểm hỏi của mỗi truy vấn: \(c\ \in \ \{ + ,\ - ,\ ?\},\ 0 \leq u < n\)\(u\) chưa bị xóa.

Kết quả:

  • Với lần lượt mỗi truy vấn loại 3, in ra một dòng một số duy nhất là kết quả truy vấn

Ví dụ:

Input Output
7
+ 0
+ 0
- 1
? 0
+ 2
- 3
? 2
2
1

Ràng buộc

  • Subtask 1 (30%): \(q \leq 10^{3}\)

  • Subtask 2 (30%): Không tồn tại truy vấn loại 2

  • Subtask 3 (40%): \(q \leq 10^{5}\)

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]