For problem statement at 1000-1999/1000-1099/1030-1039/1037/problemE.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1030-1039/1037/verifierE.go ends with panic: exit status 1
goroutine 1 [running]:
main.genCase(0x400006cee8)
/home/ubuntu/codeforces/1000-1999/1000-1099/1030-1039/1037/verifierE.go:72 +0x544
main.main()
/home/ubuntu/codeforces/1000-1999/1000-1099/1030-1039/1037/verifierE.go:90 +0x18c
exit status 2 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"io"
"os"
)
var (
buffer []byte
next int
)
func init() {
buffer, _ = io.ReadAll(os.Stdin)
}
func readInt() int {
for next < len(buffer) && (buffer[next] < '0' || buffer[next] > '9') {
next++
}
if next >= len(buffer) {
return 0
}
res := 0
for next < len(buffer) && buffer[next] >= '0' && buffer[next] <= '9' {
res = res*10 + int(buffer[next]-'0')
next++
}
return res
}
func main() {
n := readInt()
m := readInt()
k := readInt()
if n == 0 || m == 0 {
return
}
type Edge struct {
to int
id int
}
adj := make([][]Edge, n+1)
edges := make([][2]int, m+1)
deg := make([]int, n+1)
active := make([]bool, n+1)
for i := 1; i <= n; i++ {
active[i] = true
}
for i := 1; i <= m; i++ {
u := readInt()
v := readInt()
edges[i] = [2]int{u, v}
adj[u] = append(adj[u], Edge{to: v, id: i})
adj[v] = append(adj[v], Edge{to: u, id: i})
deg[u]++
deg[v]++
}
ans := n
res := make([]int, m)
queue := make([]int, 0)
for i := 1; i <= n; i++ {
if deg[i] < k {
queue = append(queue, i)
}
}
for head := 0; head < len(queue); head++ {
w := queue[head]
if !active[w] {
continue
}
active[w] = false
ans--
for _, edge := range adj[w] {
z := edge.to
if active[z] {
deg[z]--
if deg[z] < k {
queue = append(queue, z)
}
}
}
}
res[m-1] = ans
queue = queue[:0]
for i := m; i >= 2; i-- {
u, v := edges[i][0], edges[i][1]
if active[u] && active[v] {
deg[u]--
if deg[u] < k {
queue = append(queue, u)
}
deg[v]--
if deg[v] < k {
queue = append(queue, v)
}
}
for head := 0; head < len(queue); head++ {
w := queue[head]
if !active[w] {
continue
}
active[w] = false
ans--
for _, edge := range adj[w] {
z, j := edge.to, edge.id
if j < i && active[z] {
deg[z]--
if deg[z] < k {
queue = append(queue, z)
}
}
}
}
queue = queue[:0]
res[i-2] = ans
}
out := bufio.NewWriter(os.Stdout)
for i := 0; i < m; i++ {
fmt.Fprintln(out, res[i])
}
out.Flush()
}
```