Khoảng cách ngọc (Chọn ĐT'20-21)

Xem PDF



Tác giả:
Dạng bài
Điểm: 300 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Đi qua hết bốn khu phố \(A,B,C,D\), Ngọc sẽ đến với một địa điểm khác là cầu trượt. Cầu trượt có \(n\) cái lỗ, Ngọc đánh số những các lỗ từ 1 đến \(n\). Một lỗ sẽ có ống trượt thông đến các lỗ khác. Từ một lỗ, Ngọc có thể trượt đến tất cả các lỗ còn lại, đặc biệt hơn, có đúng n-1 ống trượt để nối giữa các lỗ. Có thể xem mô hình của cầu trượt này là một cái cây, với mỗi lỗ là một đỉnh.

Ngọc cũng có những số yêu thích của riêng mình. Tạm gọi tập số yêu thích của Ngọc là tập \(S\), và tập \(S\) chỉ chứa các số có giá trị không vượt quá \(n\). Ngọc muốn tìm một lỗ được đánh số \(X\) sao cho tổng khoảng cách khi trượt từ lỗ \(X\) đến một lỗ có giá trị nằm trong tập yêu thích của Ngọc là lớn thứ nhì.

Đễ dễ hiểu hơn, có thể mô hình hoá ý tưởng của Ngọc theo phong cách máy tính như sau. Ngọc có tập \(S\) chứa \(k\) số yêu thích \(S_1,S_2,…,S_k\). Với mỗi một lỗ \(T\), Ngọc sẽ đi tính tổng \(dist(T ,S_i)\) với mọi \(i \le k\), tạm gọi tổng này là \(Q_T\). Ngọc muốn tìm một lỗ \(X\) mà tổng \(Q_X\) của nó là lớn thứ nhì trong tất cả các \(Q_T\) có thể có.

\(dist(x ,y)\) chính là số ống trượt ít nhất mà Ngọc cần phải trượt qua nếu muốn trượt từ \(x\) đến \(y\).

Yêu cầu: In ra một số nguyên \(Q_X\) như Ngọc mong muốn.

Input

  • Dòng đầu tiên chứa hai số nguyên dương \(n\)\(k\) (\(2 \le k \le n \le 3 × 10^5\)) là số lỗ trong cầu trượt và số lượng các số yêu thích của Ngọc
  • \(n-1\) dòng tiếp theo, mỗi dòng chứa 2 số nguyên dương \(u\)\(v\) với ý nghĩa có một ống trượt từ \(u\) đến \(v\) (\(1 \le u ,v \le n,u ≠ v)\).
  • Dòng cuối cùng chứa \(k\) số nguyên khác nhau \(S_1,S_2,…,S_k\ (1 \le S_i \le n)\).

Output

  • Ghi ra một số nguyên là kết quả bài toán.

Scoring

  • Subtask \(1\) (\(10\%\) số điểm): \(k = 1\)\(1 \le n \le 3*10^5.\)
  • Subtask \(2\) (\(40\%\) số điểm): \(1 \le k ,n \le 5000.\)
  • Subtask \(3\) (\(50\%\) số điểm): \(1 \le k ,n \le 3*10^5.\)

Example

Test 1

Input
2 1
1 2
1
Output
0
Note
  • Ở ví dụ 1, ta có \(dist(1,1) = 0\). (Ngọc không cần trượt qua ống nào nếu muốn trượt từ 1 đến 1) và \(dist(1,2) = dist(2,1) = 1\). Ngọc chỉ có một số yêu thích là 1.
    • Nếu chọn \(X\) là 1, ta có \(Q_X = dist(1,1) = 0\).
    • Nếu chọn \(X\) là 2, ta có \(dist(1,2) = 1\).
    • Nhận thấy rằng 0 là số lớn nhì trong tập \(\{0,1\}\), đây là kết quả bài toán.

Test 2

Input
3 2
1 2
2 3
1 3
Output
2
Note
  • Ở ví dụ 2,
    • Nếu chọn \(X = 1,Q_X = dist(1,1) + dist(1,3) = 0 + 2 = 2\)
    • Nếu chọn \(X = 2,Q_X = dist(2,1) + dist(2,3) = 1 + 1 = 2\)
    • Nếu chọn \(X = 3,Q_X = dist(3,1) + dist(3,3) = 2 + 0 = 2\)
    • Số lớn thứ 2 trong tập \(\{2, 2, 2\}\) chính là 2.

Test 3

Input
3 1
1 2
2 3
1
Output
1
Note
  • Ở ví dụ 3,
    • Nếu chọn \(X = 1,Q_X = dist(1,1) = 0\)
    • Nếu chọn \(X = 2,Q_X = dist(1,2) = 1\)
    • Nếu chọn \(X = 3,Q_X = dist(3,1) = 2\)
    • Số lớn thứ 2 trong tập \(\{0, 1, 2\}\) chính là 1.

Bình luận

Không có bình luận nào.