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, mỗi truy vấn cho một tập hợp \(S\) gồm \(K\) đỉnh biệt lập (\(S = \left\{ x_{1},x_{2},\ldots,x_{K} \right\}\)).
Yêu cầu: Với mỗi truy vấn, hãy tính tổng khoảng cách ngắn nhất giữa mọi cặp đỉnh trong tập \(S\). Nói cách khác, tính giá trị của biểu thức:
\[F(S) = \sum_{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. Do kết quả có thể rất lớn, hãy đưa ra kết quả theo modulo \(10^{9} + 7\).
Dữ liệu vào:
Dòng đầu tiên chứa số nguyên \(N\) (\(1 \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\).
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 là kết quả của biểu thức \(F(S)\ \left( mod\ 10^{9} + 7 \right)\).
Ví dụ:
| input | output |
|---|---|
7 1 2 1 3 2 4 2 5 3 6 3 7 1 3 4 5 7 |
10 |
Ràng buộc:
Subtask 1 (\(N,Q \leq 1000\)).
Subtask 2 (\(N,Q \leq 2 \cdot 10^{5}\) , \(K = N\) với mọi truy vấn).
Subtask 3 (\(\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