For problem statement at 1000-1999/1600-1699/1610-1619/1613/problemE.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1610-1619/1613/verifierE.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var t int
if _, err := fmt.Fscan(reader, &t); err != nil {
return
}
for tc := 0; tc < t; tc++ {
var n, m int
fmt.Fscan(reader, &n, &m)
grid := make([]byte, n*m)
for i := 0; i < n; i++ {
var row string
fmt.Fscan(reader, &row)
copy(grid[i*m:], row)
}
degree := make([]int, n*m)
q := make([]int, 0, n*m)
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
idx := i*m + j
ch := grid[idx]
if ch == '.' || ch == 'L' {
deg := 0
if i > 0 && (grid[idx-m] == '.' || grid[idx-m] == 'L') {
deg++
}
if i < n-1 && (grid[idx+m] == '.' || grid[idx+m] == 'L') {
deg++
}
if j > 0 && (grid[idx-1] == '.' || grid[idx-1] == 'L') {
deg++
}
if j < m-1 && (grid[idx+1] == '.' || grid[idx+1] == 'L') {
deg++
}
degree[idx] = deg
if ch == 'L' {
q = append(q, idx)
}
}
}
}
head := 0
for head < len(q) {
curr := q[head]
head++
i := curr / m
j := curr % m
if i > 0 {
idx := curr - m
if grid[idx] == '.' {
degree[idx]--
if degree[idx] <= 1 {
grid[idx] = '+'
q = append(q, idx)
}
}
}
if i < n-1 {
idx := curr + m
if grid[idx] == '.' {
degree[idx]--
if degree[idx] <= 1 {
grid[idx] = '+'
q = append(q, idx)
}
}
}
if j > 0 {
idx := curr - 1
if grid[idx] == '.' {
degree[idx]--
if degree[idx] <= 1 {
grid[idx] = '+'
q = append(q, idx)
}
}
}
if j < m-1 {
idx := curr + 1
if grid[idx] == '.' {
degree[idx]--
if degree[idx] <= 1 {
grid[idx] = '+'
q = append(q, idx)
}
}
}
}
for i := 0; i < n; i++ {
writer.Write(grid[i*m : (i+1)*m])
writer.WriteByte('\n')
}
}
}