[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