Cho một cây gồm \(N\) đỉnh và \(N - 1\) cạnh vô hướng, các cạnh đều có trọng số bằng \(1\). Các đỉnh được đánh số từ \(1\) đến \(N\). 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\) đỉnh trọng yếu (\(S = \left\{ x_{1},x_{2},\ldots,x_{K} \right\}\)).
Yêu cầu: Với mỗi truy vấn, hãy tìm khoảng cách ngắn nhất giữa hai đỉnh phân biệt bất kỳ nằm trong tập \(S\). Nói cách khác, hãy tính giá trị:
\[D_{\min}(S) = \min_{1 \leq i < j \leq K}{\text{dist}\left( x_{i},x_{j} \right)}\]
Trong đó \(\text{dist}(u,v)\) là số cạnh trên đường đi ngắn nhất giữa hai đỉnh \(u\) và \(v\) trên cây gốc.
Dữ liệu vào:
Dòng đầu tiên chứa số nguyên \(N\) (\(2 \leq N \leq 2 \cdot 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.
Dòng tiếp theo chứa số nguyên \(Q\) (\(1 \leq Q \leq 2 \cdot 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 đỉnh trong tập \(S\) (\(2 \leq K \leq N\)).
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\)).
Kết quả:
- Với mỗi truy vấn, in ra một số nguyên duy nhất trên một dòng là giá trị \(D_{\min}(S)\) tìm được.
Ví dụ:
| input | output |
|---|---|
7 1 2 1 3 2 4 2 5 3 6 3 7 2 3 4 5 7 4 4 5 6 7 |
2 2 |
Ràng buộc:
Subtask 1 (30% số điểm): \(N,Q \leq 2000\), \(\sum_{}^{}K \leq 4000\).
Subtask 2 (35% số điểm): \(N,Q \leq 2 \cdot 10^{5}\), cấu trúc cây gốc có dạng một ngôi sao (Nút \(1\) nối với tất cả các nút còn lại \(2,3,\ldots,N\)).
Subtask 3 (35% số điểm): \(N,Q \leq 2 \cdot 10^{5}\), \(\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