n, k = [int(x) for x in input().split()]

values = [int(x) for x in input().split()]
parent = [-1] + [int(input()) for _ in range(n-1)]
children = [[] for _ in range(n)]

for l in range(1, n):
    children[parent[l]].append(l)

depth = [0]*n
for i in range(1, n):
    depth[i] = depth[parent[i]] + 1

leaves = [(depth[i], i) for i in range(n) if len(children[i]) == 0]
leaves.sort()
values.sort()

value = [None]*n
for i, (_, x) in enumerate(leaves):
    value[x] = values[i]

for x in reversed(range(n)):
    if value[x] is None:
        value[x] = max([value[y] for y in children[x]])

print(sum(value[1:]))
