← Home
For problem statement at 1000-1999/1300-1399/1300-1309/1304/problemE.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1300-1309/1304/verifierE.go ends with All tests passed can you fix the verifier? ```go
package main

import "fmt"

const LOG = 17
const MAXN = 100001

var adj [][]int
var depth []int
var parent [][]int

func dfs(u, p, d int) {
	depth[u] = d
	parent[u][0] = p
	for _, v := range adj[u] {
		if v != p {
			dfs(v, u, d+1)
		}
	}
}

func buildLCA(n int) {
	parent = make([][]int, n+1)
	for i := range parent {
		parent[i] = make([]int, LOG)
	}
	dfs(1, 0, 0)
	for j := 1; j < LOG; j++ {
		for i := 1; i <= n; i++ {
			if parent[i][j-1] != 0 {
				parent[i][j] = parent[parent[i][j-1]][j-1]
			}
		}
	}
}

func getLCA(u, v int) int {
	if depth[u] > depth[v] {
		u, v = v, u
	}
	diff := depth[v] - depth[u]
	for j := 0; j < LOG; j++ {
		if (diff & (1 << j)) != 0 {
			v = parent[v][j]
		}
	}
	if u == v {
		return u
	}
	for j := LOG - 1; j >= 0; j-- {
		if parent[u][j] != parent[v][j] {
			u = parent[u][j]
			v = parent[v][j]
		}
	}
	return parent[u][0]
}

func dist(u, v int) int {
	l := getLCA(u, v)
	return depth[u] + depth[v] - 2*depth[l]
}

func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}

func main() {
	var n int
	fmt.Scan(&n)
	adj = make([][]int, n+1)
	depth = make([]int, n+1)
	for i := 0; i < n-1; i++ {
		var u, v int
		fmt.Scan(&u, &v)
		adj[u] = append(adj[u], v)
		adj[v] = append(adj[v], u)
	}
	buildLCA(n)
	var q int
	fmt.Scan(&q)
	for qi := 0; qi < q; qi++ {
		var x, y, a, b, k int
		fmt.Scan(&x, &y, &a, &b, &k)
		d0 := dist(a, b)
		dxy := dist(x, y)
		d1 := dist(a, x) + 1 + dist(b, y)
		d2 := dist(a, y) + 1 + dist(b, x)
		mins := min(d1, d2)
		if dxy%2 == 1 {
			minlen := min(d0, mins)
			if k >= minlen && (k-minlen)%2 == 0 {
				fmt.Println("YES")
			} else {
				fmt.Println("NO")
			}
		} else {
			ok := false
			if k >= d0 && (k-d0)%2 == 0 {
				ok = true
			} else if k >= mins && (k-mins)%2 == 0 {
				ok = true
			}
			if ok {
				fmt.Println("YES")
			} else {
				fmt.Println("NO")
			}
		}
	}
}
```