Color a tree

Xem dạng PDF

Gửi bài giải

Điểm: 1,43 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Nguồn bài:
Peiking 2004
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Bob muốn tô màu một cây ~N~ nút. Một nút được tô khi và chỉ khi nút cha của nó được tô và chỉ được tô từng nút một. Mỗi nút tô mất ~1~ đơn vị thời gian (thời điểm bắt đầu là ~0~).

Nếu ~F_i~ là thời điểm kết thúc tô nút ~i~ thì chi phí cho tô nút ~i~ là ~C_i\cdot F_i~ (~C_i~ cho trước).

Ví dụ, nếu tô cây sau theo thứ tự ~1~, ~3~, ~5~, ~2~, ~4~ và chi phí ~C_i~ cho từng nút là ~1~, ~2~, ~1~, ~2~ và ~4~ thì tổng chi phí là ~33~ và nó là nhỏ nhất.

image

Cần tính chi phí nhỏ nhất này với một cây bất kỳ.

Input

Gồm nhiều bộ test.

Dòng đầu chứa hai số nguyên ~N~ và ~R~ (~1 \le N \le 1000~, ~1 \le R \le N~), với ~N~ là số nút và ~R~ là chỉ số của nút gốc.

Dòng thứ hai chứa ~N~ số nguyên ~C_1~, ~C_2~,.., ~C_N~ (~1 \le C_i\le 500~).

~N-1~ dòng tiếp theo mỗi dòng chứa hai số nguyên ~V_1~, ~V_2~ là cạnh nối hai nút ~V_1~ và ~V_2~, ~V_1~ là cha của ~V_2~.

Kết thúc là bộ test có ~N=R=0~ và không cần xử lý.

Output

Với mỗi bộ test, in ra chi phí nhỏ nhất cần trả.

Sample Input

5 1 
1 2 1 2 4 
1 2 
1 3 
2 4 
3 5 
0 0

Sample Output

33

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.