← Home
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)
}
```