[DHBB25 - DX29 - 11] Bài 3: Trồng cây

Xem dạng PDF

Gửi bài giải

Điểm: 50,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Cho một đồ thị dạng cây. Ban đầu, cây có ~n = 1~ đỉnh, đỉnh gốc đó được đánh số 0. Chúng ta có ~q~ truy vấn, mỗi truy vấn sẽ thực hiện một hành động thuộc một trong ba loại sau:

  • Loại 1: “+ u” (~0 \le 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 của ~i~.
  • Loại 2: “- u” (~0 \le u < n~): Xóa bỏ cây con gốc ~u~.
  • Loại 3: “? u” (~0 \le 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~.

Yêu cầ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 đó.

Input

  • Dòng đầu tiên gồm số ~q~ (~1 \le q \le 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 \le u < n~ và ~u~ chưa bị xóa.

Output

  • 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.

Sample Input 1

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

Sample Output 1

2
1

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.