For problem statement at 0-999/900-999/940-949/949/problemC.txt this is a correct solution, but verifier at 0-999/900-999/940-949/949/verifierC.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReaderSize(os.Stdin, 1<<20)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var n, m, h int
fmt.Fscan(in, &n, &m, &h)
uArr := make([]int, n+1)
for i := 1; i <= n; i++ {
fmt.Fscan(in, &uArr[i])
}
adj := make([][]int, n+1)
for i := 0; i < m; i++ {
var c1, c2 int
fmt.Fscan(in, &c1, &c2)
if (uArr[c1]+1)%h == uArr[c2] {
adj[c1] = append(adj[c1], c2)
}
if (uArr[c2]+1)%h == uArr[c1] {
adj[c2] = append(adj[c2], c1)
}
}
dfn := make([]int, n+1)
low := make([]int, n+1)
scc := make([]int, n+1)
inStack := make([]bool, n+1)
stack := make([]int, 0)
timer := 0
sccCnt := 0
sccSize := make([]int, n+1)
var dfs func(int)
dfs = func(u int) {
timer++
dfn[u] = timer
low[u] = timer
stack = append(stack, u)
inStack[u] = true
for _, v := range adj[u] {
if dfn[v] == 0 {
dfs(v)
if low[v] < low[u] {
low[u] = low[v]
}
} else if inStack[v] {
if dfn[v] < low[u] {
low[u] = dfn[v]
}
}
}
if low[u] == dfn[u] {
sccCnt++
for {
v := stack[len(stack)-1]
stack = stack[:len(stack)-1]
inStack[v] = false
scc[v] = sccCnt
sccSize[sccCnt]++
if u == v {
break
}
}
}
}
for i := 1; i <= n; i++ {
if dfn[i] == 0 {
dfs(i)
}
}
outDeg := make([]int, sccCnt+1)
for i := 1; i <= n; i++ {
for _, v := range adj[i] {
if scc[i] != scc[v] {
outDeg[scc[i]]++
}
}
}
bestScc := -1
minS := n + 1
for c := 1; c <= sccCnt; c++ {
if outDeg[c] == 0 && sccSize[c] < minS {
minS = sccSize[c]
bestScc = c
}
}
fmt.Fprintln(out, minS)
first := true
for i := 1; i <= n; i++ {
if scc[i] == bestScc {
if !first {
fmt.Fprint(out, " ")
}
fmt.Fprint(out, i)
first = false
}
}
fmt.Fprintln(out)
}