Điều hướng chính

Nhắn tin NQ Coding

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập dptreecay0

Cây 0

Dễ Quy hoạch động trên cây

  • 100 Điểm
  • 1.0s Thời gian
  • 256M Bộ nhớ
  • 0% Tỉ lệ AC
  • 0 Số AC

Cho một cây gồm \(n\) đỉnh được đánh số từ \(1\) đến \(n\). Mỗi đỉnh \(i\) của cây mang một giá trị nguyên \(A_i\).

Một tập con các đỉnh của cây được gọi là độc lập nếu không có hai đỉnh nào trong tập con đó được nối trực tiếp với nhau bởi một cạnh. Giá trị của một tập đỉnh bằng tổng các giá trị \(A_i\) của các đỉnh thuộc tập đó. Tập rỗng có giá trị bằng \(0\).

Hãy tìm giá trị lớn nhất của một tập đỉnh độc lập trên cây.

Input

  • Dòng đầu tiên chứa số nguyên \(n\) (\(1 \le n \le 10^5\)).

  • Dòng thứ hai chứa \(n\) số nguyên \(A_1, A_2, \ldots, A_n\) (\(0 \le |A_i| \le 10^9\)).

  • \(n - 1\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(u, v\) (\(1 \le u, v \le n\)) thể hiện có cạnh nối giữa đỉnh \(u\) và đỉnh \(v\).

Dữ liệu vào luôn tạo thành một cây hợp lệ.

Output

In ra một số nguyên duy nhất là số thao tác ít nhất cần thực hiện.

Example

Input:

3
1 -1 1
1 2
1 3

Output:

3

Note

Với ví dụ trên, đỉnh \(1\) có giá trị \(1\), đỉnh \(2\) có giá trị \(-1\), đỉnh \(3\) có giá trị \(1\).

Lời giải dựa trên nhận xét: coi đỉnh \(1\) có một "cha ảo" với giá trị luôn bằng \(0\). Khi đó, với mỗi đỉnh \(i\) (kể cả đỉnh \(1\)), số thao tác cần dùng để triệt tiêu chênh lệch giữa \(i\) và cha của nó (trong cây gốc tại đỉnh \(1\)) đúng bằng \(|A_i - A_{parent(i)}|\), và tổng các giá trị này trên toàn bộ các đỉnh chính là đáp số — đây cũng là chặn dưới không thể cải thiện được.

Với ví dụ trên: \(|A_1 - 0| + |A_2 - A_1| + |A_3 - A_1| = |1 - 0| + |{-1} - 1| + |1 - 1| = 1 + 2 + 0 = 3\).

Bình luận

Chưa có bình luận nào.