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\) và \(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}\)
Code tích cực |
---|
Trong 24h |
Trong 7 ngày |
|
Trong 30 ngày |
|
Thống kê |
---|
AC/Sub: 97887/180710 Pascal: 17121 C++: 130348 Python: 33199 Lượt xem/tải tests: 38905 |