CSES - Dynamic Connectivity | Liên thông động

Xem PDF

Điểm: 1800 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Cho một đồ thị vô hướng gồm \(N\) đỉnh và \(M\) cạnh. Có 2 loại thao tác:

  1. Thêm một cạnh mới vào giữa hai đỉnh \(a\)\(b\).
  2. Xóa một cạnh tồn tại giữa hai đỉnh \(a\)\(b\).

Tính số thành phần liên thông sau mỗi hành động.

Input

  • Dòng đầu tiên chứa ba số nguyên \(N\), \(M\)\(K\): số đỉnh, cạnh và thao tác.
  • \(M\) dòng tiếp theo mô tả số đỉnh. Mỗi dòng gồm hai số nguyên \(a\)\(b\): có một cạnh giữa hai đỉnh \(a\)\(b\). Có ít nhất một cạnh giữa hai cặp đỉnh bất kì.
  • \(K\) dòng tiếp theo mô tả số thao tác. Mỗi dòng gồm ba số nguyên \(t\), \(a\)\(b\): thêm \((t = 1)\) hoặc xóa \((t = 2)\) một cạnh giữa hai đỉnh \(a\)\(b\). Cạnh chỉ được tạo khi chưa tồn tại cạnh nào giữa hai đỉnh và chỉ được xóa khi tồn tại một cạnh giữa hai đỉnh.

Output

  • In ra \(k + 1\) số nguyên gồm: số thành phần liên thông trước khi thực hiện thao tác và số thành phần liên thông sau mỗi thao tác.

Constraints

  • \(2 \ \leq \ N \ \leq \ 2 \times 10^5\)
  • \(1 \ \leq M, K \ \leq \ 10^5\)
  • \(1 \ \leq a, b \ \leq \ n\)

Example

Sample input

5 3 3
1 4
2 3
3 5
1 2 5
2 3 5
1 1 2

Sample output

2 2 2 1

Bình luận

Không có bình luận nào.