На сайте acmp.ru добавились 300 новых задач, и сейчас самое время их решить.
К сожалению, ничего лучше и проще, чем решить эту задачу в лоб, быстро придумать не получилось. Поэтому решение состоит в применении поиска в глубину на двумерном массиве. Модификация ещё и в том, что dfs возвращает количество клеток, которые закрасил. Это позволяет избавиться от отдельного подсчёта размеров компонент связности.
Стоит обратить внимание на массив dd, в котором перечислены варианты ходов внутри компоненты связности. Его удобно использовать, чтобы не писать множество if'ов (особенно если вариантов много, например, у шахматного коня).
И тогда основная программа будет состоять из считывания и многократного вызова dfs'а.
Я очень хочу, чтобы мои советы были полезны вам, а для того, чтобы быстрее всех получать новые статьи можно подписаться на мой канал.