← Home
For problem statement at 0-999/700-799/720-729/723/problemD.txt this is a correct solution, but verifier at 0-999/700-799/720-729/723/verifierD.go ends with All tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

type Lake struct {
	size  int
	cells [][2]int
}

var n, m, k int
var grid [][]byte
var vis [][]bool
var di = []int{-1, 0, 1, 0}
var dj = []int{0, 1, 0, -1}

func dfs(i, j int, comp *[][2]int) {
	vis[i][j] = true
	*comp = append(*comp, [2]int{i, j})
	for d := 0; d < 4; d++ {
		ni := i + di[d]
		nj := j + dj[d]
		if ni >= 0 && ni < n && nj >= 0 && nj < m && grid[ni][nj] == '.' && !vis[ni][nj] {
			dfs(ni, nj, comp)
		}
	}
}

func main() {
	reader := bufio.NewReader(os.Stdin)
	fmt.Scan(&n, &m, &k)
	grid = make([][]byte, n)
	for i := 0; i < n; i++ {
		line, _ := reader.ReadString('\n')
		grid[i] = []byte(line[:m])
	}
	vis = make([][]bool, n)
	for i := range vis {
		vis[i] = make([]bool, m)
	}
	var lakes []Lake
	for i := 0; i < n; i++ {
		for j := 0; j < m; j++ {
			if grid[i][j] == '.' && !vis[i][j] {
				var comp [][2]int
				dfs(i, j, &comp)
				isLake := true
				for _, p := range comp {
					x, y := p[0], p[1]
					if x == 0 || x == n-1 || y == 0 || y == m-1 {
						isLake = false
						break
					}
				}
				if isLake {
					lk := Lake{len(comp), comp}
					lakes = append(lakes, lk)
				}
			}
		}
	}
	sort.Slice(lakes, func(i, j int) bool {
		return lakes[i].size < lakes[j].size
	})
	l := len(lakes)
	total := 0
	numToFill := l - k
	for i := 0; i < numToFill; i++ {
		total += lakes[i].size
		for _, p := range lakes[i].cells {
			grid[p[0]][p[1]] = '*'
		}
	}
	fmt.Println(total)
	for i := 0; i < n; i++ {
		for j := 0; j < m; j++ {
			fmt.Printf("%c", grid[i][j])
		}
		fmt.Println()
	}
}
```