For problem statement at 0-999/600-699/620-629/622/problemE.txt this is a correct solution, but verifier at 0-999/600-699/620-629/622/verifierE.go ends with test 3 failed:
input:
18
1 2
2 3
3 4
4 5
2 6
2 7
7 8
4 9
9 10
5 11
7 12
3 13
6 14
2 15
1 16
2 17
16 18
expected 9 got 12
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func max(a, b int) int {
if a > b {
return a
}
return b
}
func main() {
in := bufio.NewReader(os.Stdin)
var n int
fmt.Fscan(in, &n)
adj := make([][]int, n+1)
for i := 0; i < n-1; i++ {
var x, y int
fmt.Fscan(in, &x, &y)
adj[x] = append(adj[x], y)
adj[y] = append(adj[y], x)
}
depth := make([]int, n+1)
parent := make([]int, n+1)
children := make([][]int, n+1)
depth[1] = 0
parent[1] = -1
q := []int{1}
qi := 0
for qi < len(q) {
u := q[qi]
qi++
for _, v := range adj[u] {
if v != parent[u] {
parent[v] = u
depth[v] = depth[u] + 1
children[u] = append(children[u], v)
q = append(q, v)
}
}
}
h := make([]int, n+1)
leafcnt := make([]int, n+1)
var dfs func(int)
dfs = func(u int) {
if len(children[u]) == 0 {
h[u] = 0
leafcnt[u] = 1
return
}
maxh := 0
cnt := 0
for _, v := range children[u] {
dfs(v)
maxh = max(maxh, h[v]+1)
cnt += leafcnt[v]
}
h[u] = maxh
leafcnt[u] = cnt
}
dfs(1)
ans := 0
for v := 2; v <= n; v++ {
s := leafcnt[v]
val := h[v] + (s-1) + depth[v]
ans = max(ans, val)
}
fmt.Println(ans)
}
```