Color a tree

View as PDF

Submit solution

Points: 1.43 (partial)
Time limit: 1.0s
Memory limit: 512M
Input: stdin
Output: stdout

Problem source:
Peiking 2004
Problem type
Allowed languages
C, C++, Java, Kotlin, Pascal, PyPy, Python, 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

Comments

Please read the guidelines before commenting.


There are no comments at the moment.