← Home
For problem statement at 1000-1999/1400-1499/1430-1439/1436/problemD.txt this is a correct solution, but verifier at 1000-1999/1400-1499/1430-1439/1436/verifierD.go ends with All tests passed. can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)

	var n int
	fmt.Fscan(reader, &n)

	children := make([][]int, n+1)
	for i := 2; i <= n; i++ {
		var p int
		fmt.Fscan(reader, &p)
		children[p] = append(children[p], i)
	}

	a := make([]int64, n+1)
	for i := 1; i <= n; i++ {
		fmt.Fscan(reader, &a[i])
	}

	subtreeSum := make([]int64, n+1)
	numLeaves := make([]int64, n+1)
	for i := 1; i <= n; i++ {
		if len(children[i]) == 0 {
			numLeaves[i] = 1
		}
	}

	// Compute subtreeSum and numLeaves bottom-up
	for i := 1; i <= n; i++ {
		subtreeSum[i] = a[i]
	}
	for i := n; i >= 1; i-- {
		for _, c := range children[i] {
			subtreeSum[i] += subtreeSum[c]
			numLeaves[i] += numLeaves[c]
		}
	}

	var ans int64
	for i := 1; i <= n; i++ {
		L := numLeaves[i]
		S := subtreeSum[i]
		if L > 0 {
			val := (S + L - 1) / L
			if val > ans {
				ans = val
			}
		}
	}

	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()
	fmt.Fprintln(writer, ans)
}
```