만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

에너지

시간 제한1초메모리 제한1024 MB

요약
트리에서 서로 겹치지 않는 경로 k개를 고를 때, 경로가 지나는 방들의 에너지 합이 최대가 되는 값을 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 트리, DFS
정답자
아직 제출이 없습니다

문제

악당 반 펠트는 게임기를 급히 충전해야 합니다. 이를 위해 에너지 공급원이 있는 지하 미로를 이용하려고 합니다.

미로에는 1번부터 nn번까지 번호가 붙은 nn개의 방이 있습니다. 일부 방 사이에는 복도가 있으며, 복도는 양방향으로 이동할 수 있습니다.

방 aa와 방 bb 사이의 경로는 방들의 수열 u1,u2,…,uku_1, u_2, \dots, u_k로서, u1=au_1 = a, uk=bu_k = b이고, 모든 1≤i≤k−11 \le i \le k - 1에 대해 uiu_i와 ui+1u_{i+1}이 복도로 연결된 것을 말합니다. 임의의 두 방 사이에 경로가 정확히 하나 있으므로, 이 미로는 트리이며 복도는 정확히 n−1n-1개입니다.

반 펠트는 어둡고 무서운 미로에 직접 들어가고 싶지 않습니다. 대신 kk마리의 재규어를 보내 에너지를 가져오게 합니다. 재규어마다 반 펠트가 방 쌍(같은 방일 수도 있음)을 하나 고르면, 재규어는 그 두 방 사이 경로 위의 모든 방을 지납니다(고른 두 방 포함). 재규어는 매우 공격적이어서, 선택한 두 경로가 방을 하나라도 공유하면 재규어끼리 싸울 수 있습니다. 반 펠트는 재규어를 반드시 전부 보내야 합니다.

ii번 방의 에너지 공급원에는 aia_i만큼의 에너지가 들어 있습니다. 공급원의 에너지는 음수일 수도 있습니다. 각 재규어는 지나가는 모든 방의 공급원에서 에너지를 가져갑니다. 반 펠트가 받는 에너지는 재규어들이 가져간 에너지의 총합입니다.

반 펠트가 받을 수 있는 에너지의 최댓값을 구하세요.

입력

첫째 줄에 방의 개수 nn과 재규어의 수 kk가 주어집니다 (1≤n≤10001 \le n \le 1000, 1≤k≤n1 \le k \le n).

둘째 줄에는 각 방 공급원의 에너지 aia_i가 공백으로 구분되어 nn개 주어집니다 (−109≤ai≤109-10^9 \le a_i \le 10^9).

이후 n−1n-1개의 줄에는 복도로 연결된 두 방의 번호 uiu_i와 viv_i가 주어집니다.

출력

반 펠트가 받을 수 있는 에너지의 최댓값을 정수 하나로 출력하세요.

힌트

문제의 예시 상황에서 반 펠트는 한 재규어를 3번 방과 7번 방 사이 경로로, 다른 재규어를 5번 방과 6번 방 사이 경로로 보낼 수 있습니다. 그러면 재규어들은 3, 7, 5, 4, 6번 방을 지나며 에너지 14를 모읍니다.

예제1

  1. 예제 1

    입력
    7 2
    3 -10 2 3 2 5 2
    1 2
    2 3
    2 4
    4 5
    4 6
    3 7
    
    예상 출력
    14