Thành phần liên thông online

View as PDF

Time limit: 1.0s , Memory limit: 508M , Points: 35 (partial)

Cho đồ thị vô hướng G = (V, E) không có khuyên, V được gọi là tập đỉnh và |V| = n, E được gọi là họ các cạnh của G|E| = m, ví dụ như hình vẽ sau:

alt text

Để có hình như trên Bi vẽ ngẫu nhiên n đỉnh và sau đó vẽ lần lượt m cạnh E của đồ thị theo thứ tự như ví dụ trên sẽ là:

1 2
5 4
2 3
3 1
3 6

Trong quá trình vẽ Bi nảy ra các câu hỏi nếu mỗi lần vẽ một cạnh của E thì G có mấy thành phần liên thông. Để câu hỏi có nghĩa Bi đặt ra bài toán như sau:

Với đồ thị G đã cho như hình vẽ thực hiện các thao tác sau:

  1. Xóa các cạnh của G từ thứ tự l đến r trong dãy m câu lệnh vẽ cạnh trên.

  2. Đếm số thành phần liên thông và in kết quả.

  3. Phục hồi lại các cạnh đã xóa để thực hiện thao tác hỏi khác.

Hãy lập trình giải quyết nội dung trên giúp Bi.

Input

Dòng thứ nhất chứa hai số nguyên n, m thỏa 2 \le n \le 500; 1 \le m \le 10^4.

m dòng kế tiếp biểu diễn cạnh nối giữa hai đỉnh x_i, y_i của đồ thị, dữ liệu thỏa 1 \le x_i \neq y_i \le n.

Dòng tiếp theo chứa số nguyên k thỏa 1 \le k \le 2.10^4 là số câu hỏi của Bi.

k dòng kế tiếp chứa các số nguyên lr thỏa 1 \le \ l \le r \le m là các cạnh trong khoảng thứ tự cần xóa để hỏi (sau khi hỏi xong sẽ phục hồi lại).

Output

In ra k kết quả tương ứng với k câu hỏi.

Samples

Sample Input 1
6 5
1 2
5 4
2 3
3 1
3 6
6
1 3
2 5
1 5
5 5
2 4
3 3
Sample Output 1
4
5
6
3
4
2

Comments