Solução escrita por Arthur Lobo
Conhecimento prévio necessário:
Primeiro, vamos reduzir o problema inicial para um grafo: cada posição representará um vértice e vamos criar arestas entre vértices que sào vizinhos e ambos não estão bloqueados, ou seja, se um está pintado o outro também será.
Formalmente, vamos adicionar uma aresta de para se for um dos vizinhos de , ou seja, for um dos e ambos não estão bloqueados.
Se o primeiro quadradinho a ser pintado for , então todos os quadradinhos que consegue chegar também serão pintados, ou seja, todos que estão na mesma componente conexa, que ele.
Portanto, basta montar esse grafo e depois rodar uma dfs partindo de e ver o tamanho da sua componente conexa, que pode ser feito em .
Clique aqui para conferir o código