For problem statement at 0-999/0-99/20-29/29/problemD.txt this is a correct solution, but verifier at 0-999/0-99/20-29/29/verifierD.go ends with All 100 tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
adj := make([][]int, n+1)
deg := make([]int, n+1)
for i := 0; i < n-1; i++ {
scanner.Scan()
u, _ := strconv.Atoi(scanner.Text())
scanner.Scan()
v, _ := strconv.Atoi(scanner.Text())
adj[u] = append(adj[u], v)
adj[v] = append(adj[v], u)
deg[u]++
deg[v]++
}
leaves := 0
for i := 2; i <= n; i++ {
if deg[i] == 1 {
leaves++
}
}
target := make([]int, leaves)
pos := make([]int, n+1)
for i := 0; i <= n; i++ {
pos[i] = -1
}
for i := 0; i < leaves; i++ {
scanner.Scan()
target[i], _ = strconv.Atoi(scanner.Text())
pos[target[i]] = i
}
minPos := make([]int, n+1)
for i := 0; i <= n; i++ {
minPos[i] = 1e9
}
var dfs1 func(int, int)
dfs1 = func(u, p int) {
if deg[u] == 1 && u != 1 {
minPos[u] = pos[u]
}
for _, v := range adj[u] {
if v != p {
dfs1(v, u)
if minPos[v] < minPos[u] {
minPos[u] = minPos[v]
}
}
}
}
dfs1(1, 0)
for i := 1; i <= n; i++ {
sort.Slice(adj[i], func(a, b int) bool {
return minPos[adj[i][a]] < minPos[adj[i][b]]
})
}
ans := []int{}
gotLeaves := []int{}
var dfs2 func(int, int)
dfs2 = func(u, p int) {
ans = append(ans, u)
if deg[u] == 1 && u != 1 {
gotLeaves = append(gotLeaves, u)
}
for _, v := range adj[u] {
if v != p {
dfs2(v, u)
ans = append(ans, u)
}
}
}
dfs2(1, 0)
valid := true
if len(gotLeaves) != leaves {
valid = false
} else {
for i := 0; i < leaves; i++ {
if gotLeaves[i] != target[i] {
valid = false
break
}
}
}
if !valid {
fmt.Println("-1")
} else {
for i, x := range ans {
if i > 0 {
fmt.Print(" ")
}
fmt.Print(x)
}
fmt.Println()
}
}