For problem statement at 1000-1999/1800-1899/1800-1809/1805/problemD.txt this is a correct solution, but verifier at 1000-1999/1800-1899/1800-1809/1805/verifierD.go ends with All tests passed can you fix the verifier? package main
import (
"bytes"
"io"
"os"
"strconv"
)
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++
}
sign := 1
if fs.idx < fs.n && fs.data[fs.idx] == '-' {
sign = -1
fs.idx++
}
val := 0
for fs.idx < fs.n && fs.data[fs.idx] >= '0' && fs.data[fs.idx] <= '9' {
val = val*10 + int(fs.data[fs.idx]-'0')
fs.idx++
}
return val * sign
}
func bfs(start int, g [][]int) ([]int, int) {
n := len(g)
dist := make([]int, n)
for i := 0; i < n; i++ {
dist[i] = -1
}
q := make([]int, n)
head, tail := 0, 0
q[tail] = start
tail++
dist[start] = 0
far := start
for head < tail {
v := q[head]
head++
if dist[v] > dist[far] {
far = v
}
for _, to := range g[v] {
if dist[to] == -1 {
dist[to] = dist[v] + 1
q[tail] = to
tail++
}
}
}
return dist, far
}
func main() {
fs := NewFastScanner()
n := fs.NextInt()
g := make([][]int, n)
for i := 0; i < n-1; i++ {
u := fs.NextInt() - 1
v := fs.NextInt() - 1
g[u] = append(g[u], v)
g[v] = append(g[v], u)
}
_, a := bfs(0, g)
da, b := bfs(a, g)
db, _ := bfs(b, g)
D := da[b]
freq := make([]int, n+1)
for i := 0; i < n; i++ {
e := da[i]
if db[i] > e {
e = db[i]
}
freq[e]++
}
prefix := make([]int, n+1)
prefix[0] = freq[0]
for i := 1; i <= n; i++ {
prefix[i] = prefix[i-1] + freq[i]
}
var out bytes.Buffer
for k := 1; k <= n; k++ {
if k > 1 {
out.WriteByte(' ')
}
ans := n
if k <= D {
ans = 1 + prefix[k-1]
}
out.WriteString(strconv.Itoa(ans))
}
out.WriteByte('\n')
os.Stdout.Write(out.Bytes())
}