For problem statement at 1000-1999/1500-1599/1570-1579/1572/problemA.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1570-1579/1572/verifierA.go ends with All tests passed can you fix the verifier? package main
import (
"io"
"os"
"strconv"
"strings"
)
type FastScanner struct {
data []byte
idx int
n int
}
func NewFastScanner() *FastScanner {
data, _ := io.ReadAll(os.Stdin)
return &FastScanner{data: data, n: len(data)}
}
func (fs *FastScanner) NextInt() int {
for fs.idx < fs.n {
c := fs.data[fs.idx]
if c >= '0' && c <= '9' {
break
}
fs.idx++
}
val := 0
for fs.idx < fs.n {
c := fs.data[fs.idx]
if c < '0' || c > '9' {
break
}
val = val*10 + int(c-'0')
fs.idx++
}
return val
}
func main() {
fs := NewFastScanner()
t := fs.NextInt()
var out strings.Builder
for ; t > 0; t-- {
n := fs.NextInt()
head := make([]int, n+1)
for i := 1; i <= n; i++ {
head[i] = -1
}
indeg := make([]int, n+1)
dp := make([]int, n+1)
to := make([]int, 0)
next := make([]int, 0)
for i := 1; i <= n; i++ {
k := fs.NextInt()
indeg[i] = k
dp[i] = 1
for j := 0; j < k; j++ {
x := fs.NextInt()
to = append(to, i)
next = append(next, head[x])
head[x] = len(to) - 1
}
}
q := make([]int, 0, n)
for i := 1; i <= n; i++ {
if indeg[i] == 0 {
q = append(q, i)
}
}
cnt := 0
ans := 1
for l := 0; l < len(q); l++ {
u := q[l]
cnt++
if dp[u] > ans {
ans = dp[u]
}
for e := head[u]; e != -1; e = next[e] {
v := to[e]
val := dp[u]
if u > v {
val++
}
if val > dp[v] {
dp[v] = val
}
indeg[v]--
if indeg[v] == 0 {
q = append(q, v)
}
}
}
if cnt < n {
out.WriteString("-1\n")
} else {
out.WriteString(strconv.Itoa(ans))
out.WriteByte('\n')
}
}
os.Stdout.WriteString(out.String())
}