← Home
For problem statement at 1000-1999/1400-1499/1490-1499/1499/problemF.txt this is a correct solution, but verifier at 1000-1999/1400-1499/1490-1499/1499/verifierF.go ends with could not read testcasesF.txt: open testcasesF.txt: no such file or directory

exit status 1 can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

const MOD int64 = 998244353

var (
	n, k int
	g    [][]int
	data []byte
	pos  int
)

func nextInt() int {
	for pos < len(data) && (data[pos] < '0' || data[pos] > '9') {
		pos++
	}
	val := 0
	for pos < len(data) && data[pos] >= '0' && data[pos] <= '9' {
		val = val*10 + int(data[pos]-'0')
		pos++
	}
	return val
}

func dfs(v, p int) ([]int64, int64) {
	cur := make([]int64, k+1)
	cur[0] = 1

	for _, u := range g[v] {
		if u == p {
			continue
		}

		child, childSum := dfs(u, v)

		prefChild := make([]int64, k+1)
		for d := 1; d <= k; d++ {
			x := prefChild[d-1] + child[d-1]
			if x >= MOD {
				x -= MOD
			}
			prefChild[d] = x
		}

		prefCur := make([]int64, k+1)
		prefCur[0] = cur[0]
		for i := 1; i <= k; i++ {
			x := prefCur[i-1] + cur[i]
			if x >= MOD {
				x -= MOD
			}
			prefCur[i] = x
		}

		next := make([]int64, k+1)
		for h := 0; h <= k; h++ {
			val := cur[h] * childSum % MOD

			a := h
			if k-h < a {
				a = k - h
			}
			if a > 0 {
				val += cur[h] * prefChild[a] % MOD
				if val >= MOD {
					val -= MOD
				}
			}

			if h > 0 {
				b := h - 1
				if k-h < b {
					b = k - h
				}
				if b >= 0 {
					val += child[h-1] * prefCur[b] % MOD
					if val >= MOD {
						val -= MOD
					}
				}
			}

			next[h] = val
		}

		cur = next
	}

	var sum int64
	for i := 0; i <= k; i++ {
		sum += cur[i]
		if sum >= MOD {
			sum -= MOD
		}
	}

	return cur, sum
}

func main() {
	data, _ = io.ReadAll(os.Stdin)
	n = nextInt()
	k = nextInt()

	g = make([][]int, n)
	for i := 0; i < n-1; i++ {
		v := nextInt() - 1
		u := nextInt() - 1
		g[v] = append(g[v], u)
		g[u] = append(g[u], v)
	}

	_, ans := dfs(0, -1)

	w := bufio.NewWriterSize(os.Stdout, 1<<20)
	fmt.Fprint(w, ans)
	w.Flush()
}