For problem statement at 0-999/400-499/420-429/429/problemA.txt this is a correct solution, but verifier at 0-999/400-499/420-429/429/verifierA.go ends with case 4 failed: expected
4
2
3
6
7
got
4
2
7
6
3
input:
7
2 1
3 1
4 1
5 2
6 2
7 5
0 1 0 1 0 1 1
0 0 1 1 0 0 1
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var n int
if _, err := fmt.Fscan(in, &n); err != nil {
return
}
adj := make([][]int, n+1)
for i := 0; i < n-1; i++ {
var u, v int
fmt.Fscan(in, &u, &v)
adj[u] = append(adj[u], v)
adj[v] = append(adj[v], u)
}
init := make([]int, n+1)
for i := 1; i <= n; i++ {
fmt.Fscan(in, &init[i])
}
goal := make([]int, n+1)
for i := 1; i <= n; i++ {
fmt.Fscan(in, &goal[i])
}
var ans []int
var dfs func(u, p, oddFlips, evenFlips, depth int)
dfs = func(u, p, oddFlips, evenFlips, depth int) {
cur := init[u]
if depth%2 == 1 {
cur ^= oddFlips
} else {
cur ^= evenFlips
}
if cur != goal[u] {
ans = append(ans, u)
if depth%2 == 1 {
oddFlips ^= 1
} else {
evenFlips ^= 1
}
}
for _, v := range adj[u] {
if v != p {
dfs(v, u, oddFlips, evenFlips, depth+1)
}
}
}
dfs(1, 0, 0, 0, 0)
fmt.Fprintln(out, len(ans))
for _, v := range ans {
fmt.Fprintln(out, v)
}
}
```