Tính toán khoảng cách trên tập đỉnh ()
auxi 2000 ms 1024 MB
Nội dung bài tập

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}\)).

Nộp bài
Bạn cần đăng nhập để nộp bài. Đăng nhập
Lịch sử nộp bài của bạn
Bạn chưa nộp bài tập này.