For problem statement at 2000-2999/2000-2099/2020-2029/2028/problemE.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2020-2029/2028/verifierE.go ends with All tests passed. can you fix the verifier? package main
import (
"io"
"os"
"strconv"
)
const MOD int64 = 998244353
const MAXN = 200005
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 && (fs.data[fs.idx] < '0' || fs.data[fs.idx] > '9') {
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() {
inv := make([]int64, MAXN+1)
inv[1] = 1
for i := 2; i <= MAXN; i++ {
inv[i] = MOD - (MOD/int64(i))*inv[int(MOD%int64(i))]%MOD
}
fs := NewFastScanner()
t := fs.NextInt()
out := make([]byte, 0, 1<<22)
for ; t > 0; t-- {
n := fs.NextInt()
g := make([][]int, n+1)
for i := 0; i < n-1; i++ {
u := fs.NextInt()
v := fs.NextInt()
g[u] = append(g[u], v)
g[v] = append(g[v], u)
}
parent := make([]int, n+1)
order := make([]int, 0, n)
stack := make([]int, 1, n)
stack[0] = 1
parent[1] = -1
for len(stack) > 0 {
v := stack[len(stack)-1]
stack = stack[:len(stack)-1]
order = append(order, v)
for _, to := range g[v] {
if to != parent[v] {
parent[to] = v
stack = append(stack, to)
}
}
}
h := make([]int, n+1)
for i := n - 1; i >= 0; i-- {
v := order[i]
minH := n + 1
cnt := 0
for _, to := range g[v] {
if to != parent[v] {
cnt++
if h[to] < minH {
minH = h[to]
}
}
}
if cnt == 0 {
h[v] = 0
} else {
h[v] = minH + 1
}
}
ans := make([]int64, n+1)
ans[1] = 1
for _, v := range order {
for _, to := range g[v] {
if to != parent[v] {
if h[to] == 0 {
ans[to] = 0
} else {
ans[to] = ans[v] * int64(h[to]) % MOD * inv[h[to]+1] % MOD
}
}
}
}
for i := 1; i <= n; i++ {
out = strconv.AppendInt(out, ans[i], 10)
if i == n {
out = append(out, '\n')
} else {
out = append(out, ' ')
}
}
}
os.Stdout.Write(out)
}