Cho một vương quốc cấu trúc dạng cây gồm \(N\) đỉnh và \(N - 1\) cạnh vô hướng kết nối chúng. Các đỉnh được đánh số từ \(1\) đến \(N\). Hoàng gia cần chuẩn bị phương án đối phó với các cuộc tấn công biệt lập. Bạn cần xử lý \(Q\) truy vấn độc lập, mỗi truy vấn cung cấp một tập hợp \(S\) gồm \(K\) thành phố đặc biệt (\(S = \left\{ x_{1},x_{2},\ldots,x_{K} \right\}\)) đang có nguy cơ bị địch đánh chiếm.
Yêu cầu: Với mỗi truy vấn, hãy tìm số lượng thành phố tối thiểu (không thuộc tập \(S\)) cần phải phá hủy để không tồn tại bất kỳ đường đi nào giữa hai thành phố bất kỳ trong tập \(S\) mà chỉ đi qua các thành phố chưa bị phá hủy. Nếu không có giải pháp nào khả thi (nghĩa là tồn tại hai thành phố trong tập \(S\) kề nhau trực tiếp bằng một cạnh trên cây gốc), hãy in ra -1.
Dữ liệu vào:
Dòng đầu chứa số nguyên \(N\) (\(1 \leq N \leq 2.10^{5}\)).
\(N - 1\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(u,v\) mô tả một cạnh của cây vương quốc.
Dòng tiếp theo chứa số nguyên \(Q\) (\(1 \leq Q \leq 2.10^{5}\)).
Tiếp theo là \(Q\) nhóm dòng, mỗi nhóm mô tả một truy vấn:
Dòng đầu chứa số nguyên \(K\) – số lượng thành phố trong tập \(S\).
Dòng tiếp theo chứa \(K\) số nguyên phân biệt \(x_{1},x_{2},\ldots,x_{K}\) (\(1 \leq x_{i} \leq N\)).
Dữ liệu:
- Với mỗi truy vấn, in ra một số nguyên duy nhất là số thành phố tối thiểu cần phá hủy, hoặc -1 nếu bất khả thi.
Ví dụ:
| input | output |
|---|---|
7 1 2 1 3 2 4 2 5 3 6 3 7 2 4 4 5 6 7 2 2 4 |
2 -1 |
Ràng buộc:
Subtask 1 (\(N,Q \leq 1000\)).
Subtask 2 (\(\sum_{}^{}K \leq 2 \cdot 10^{5}\)).
- auxi Tính toán khoảng cách trên tập đỉnh
- kingct Kingct •
- relcenter Trung tâm cứu trợ
- color Cặp đỉnh cùng màu liên thông
- black Đen và trắng
- citycter Thành phố trung tâm
- distmin Khoảng cách giữa hai đỉnh trọng yếu
- kcmax Đường kính của tập đỉnh trọng yếu
- maxiset Tập độc lập trọng số cực đại trên cây ảo