부모

아직 제출이 없습니다시간 제한5초메모리 제한128 MB

문제

각 노드에 정수 값이 매겨진, 루트가 있는 트리가 주어진다. 노드 집합의 값은 그 집합에 속한 모든 노드의 값을 더한 값으로 정의한다.

양의 정수 KK에 대해, 다음 두 조건을 모두 만족하는 노드 집합을 KK-반부모 집합(K-anti-parental subset)이라고 하자.

  1. 집합에 속한 노드의 개수가 11개 이상 KK개 이하이다.
  2. 집합에 속한 어떤 두 노드에 대해서도 한 노드가 다른 노드의 부모가 아니다. 즉, 집합은 부모와 자식 관계인 두 노드를 동시에 포함하지 않는다.

노드에 값이 매겨진 트리와 KK가 주어질 때, KK-반부모 집합이 가질 수 있는 값의 최댓값을 구하여라.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

각 테스트 케이스의 첫째 줄에는 노드의 수 NN과 매개변수 KK가 공백으로 구분되어 주어진다. N100000N \le 100000이고 1K1001 \le K \le 100이다. 노드의 번호는 00부터 N1N-1까지이며, 00번 노드는 항상 루트이다.

둘째 줄에는 NN개의 정수가 주어지며, 이는 00번부터 N1N-1번 노드까지의 값을 순서대로 나타낸다. 각 값은 [1000,1000][-1000, 1000] 범위에 속한다.

셋째 줄에는 N1N-1개의 정수가 주어지며, 이는 11번부터 N1N-1번 노드까지 각 노드의 부모 번호를 번호가 증가하는 순서대로 나타낸다. 따라서 첫 번째 정수는 11번 노드의 부모이다. 루트(00번 노드)의 부모는 주어지지 않는다. N=1N = 1인 경우 이 줄은 비어 있다.

출력

각 테스트 케이스마다 한 줄에 해당 트리의 KK-반부모 집합이 가질 수 있는 값의 최댓값을 출력한다.