Time limit: 1.0s , Memory limit: 256M , Points: 0 (partial)
Bạn được cho một dãy hoán vị độ dài
và một đồ thị
gồm
đỉnh. Giữa hai đỉnh
và
của đồ thị có cạnh nối hai chiều khi và chỉ khi
và
.
Bạn cần xử lý truy vấn, mỗi truy vấn bạn được cho cặp số nguyên
,
, yêu cầu thực hiện các bước sau theo thứ tự:
- Hoán đổi giá trị của
và
.
- Cập nhật lại danh sách cạnh của đồ thị dựa trên dãy hoán vị
đã thay đổi (thêm hoặc xóa cạnh).
- Đếm số thành phần liên thông của đồ thị.
Lưu ý rằng dãy hoán vị đã thay đổi sẽ được dùng cho truy vấn tiếp theo.
Input
- Dòng đầu tiên chứa số nguyên
.
- Dòng thứ hai chứa
số nguyên của dãy hoán vị
.
- Dòng tiếp theo chứa số nguyên
.
dòng tiếp theo, mỗi dòng chứa hai số nguyên
và
mô tả truy vấn.
- Dữ liệu đảm bảo dãy
là một dãy hoán vị hợp lệ.
Output
- Với mỗi truy vấn, in ra số thành phần liên thông trên một dòng.
Examples
Sample Input
3
3 1 2
2
2 3
1 2
Sample Output
3
2
Scoring
- Subtask
với
số điểm:
- Subtask
với
số điểm:
- Subtask
với
số điểm: Không có ràng buộc gì thêm
Notes
Trong ví dụ, đồ thị ban đầu có một cạnh nối giữa hai đỉnh .
Ở truy vấn thứ nhất, dãy hoán vị và đồ thị không có cạnh nối. Có tổng cộng
thành phần liên thông.
Ở truy vấn thứ hai, dãy hoán vị và đồ thị có một cạnh nối giữa hai đỉnh
. Có tổng cộng
thành phần liên thông.
Comments