Qual é o caminho mais rápido para encontrar o caminho mais profundo em um array 3D?

Eu tenho tentado encontrar solução para o meu problema por mais de uma semana e eu não consegui descobrir nada melhor do que um progresso milionário, então eu acho que é hora de pedir a alguém para me ajudar.

Eu tenho um array 3D. Digamos que estamos falando do chão e a primeira camada é uma superfície. Outras camadas são pisos abaixo do solo. Eu tenho que encontrar o comprimento do caminho mais profundo, a contagem de cavernas isoladas no subsolo e o tamanho da maior caverna.

Aqui está a visualização do meu problema.

Input:
5 5 5 // x, y, z
xxxxx
oxxxx
xxxxx
xoxxo
ooxxx

xxxxx
xxoxx

and so...

Output:
5 // deepest path - starting from the surface
22 // size of the biggest cave
3 // number of izolated caves (red ones) (izolated - cave that doesn't reach the surface)

Note que, mesmo que os eritrócitos no 2º andar estejam próximos do verde, não é a mesma caverna porque está na diagonal e isso não conta. Eu tenho dito que a melhor maneira de fazer isso, pode ser usando algoritmo recursivo "dividir e governar" no entanto eu realmente não sei como poderia ser.

questionAnswers(4)

yourAnswerToTheQuestion