각 노드에 정수 값이 매겨진, 루트가 있는 트리가 주어진다. 노드 집합의 값은 그 집합에 속한 모든 노드의 값을 더한 값으로 정의한다.
양의 정수 K에 대해, 다음 두 조건을 모두 만족하는 노드 집합을 K-반부모 집합(K-anti-parental subset)이라고 하자.
노드에 값이 매겨진 트리와 K가 주어질 때, K-반부모 집합이 가질 수 있는 값의 최댓값을 구하여라.
첫째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.
각 테스트 케이스의 첫째 줄에는 노드의 수 N과 매개변수 K가 공백으로 구분되어 주어진다. N≤100000이고 1≤K≤100이다. 노드의 번호는 0부터 N−1까지이며, 0번 노드는 항상 루트이다.
둘째 줄에는 N개의 정수가 주어지며, 이는 0번부터 N−1번 노드까지의 값을 순서대로 나타낸다. 각 값은 [−1000,1000] 범위에 속한다.
셋째 줄에는 N−1개의 정수가 주어지며, 이는 1번부터 N−1번 노드까지 각 노드의 부모 번호를 번호가 증가하는 순서대로 나타낸다. 따라서 첫 번째 정수는 1번 노드의 부모이다. 루트(0번 노드)의 부모는 주어지지 않는다. N=1인 경우 이 줄은 비어 있다.
각 테스트 케이스마다 한 줄에 해당 트리의 K-반부모 집합이 가질 수 있는 값의 최댓값을 출력한다.