XXVI Olimpíada Brasileira de Informática
Submeta sua solução

Nome do arquivo: relogios.x, onde x deve ser c, cpp, java, js ou py

Relógios

É como se diz: mesmo um relógio parado está certo duas vezes por dia. Quer dizer, se um relógio está parado com seus ponteiros marcando, digamos, 7:32, e você olhar para ele exatamente às 7:32 da manhã, ou da noite, o relógio vai lhe mostrar a hora certa! O coelho branco está atrasado, muito atrasado. Ele precisa chegar ao seu destino o mais rápido possível, mas não pode, de jeito nenhum, mas de jeito nenhum mesmo, passar por um relógio que não esteja lhe mostrando a hora certa.

O coelho branco está na sala do canto superior esquerdo de um palácio que é um quadriculado de salas iguais, cada uma delas contendo um relógio cujo marcador está dividido em K unidades de tempo, de 0 a K-1, e que possuem apenas um ponteiro. Alguns relógios estão parados, enquanto os demais funcionam perfeitamente sincronizados. O coelho precisa chegar na sala do canto inferior direito, pode se mover ortogonalmente apenas e leva exatamente uma unidade de tempo para ir de uma sala para outra. Ele pode ficar esperando parado, por uma quantidade inteira de unidades de tempo, numa sala cujo relógio esteja funcionando. Mas ele não pode entrar, nem ficar esperando parado, em uma sala cujo relógio lhe esteja mostrando a hora errada!

No exemplo da figura, K=6 e os relógios mostrados estão parados. Nas salas onde a figura não mostra o relógio, é porque ele está funcionando. Você consegue ver que, para esse exemplo, o tempo mínimo para o coelho branco chegar na sala inferior direita é 8 unidades de tempo?

Seu programa precisa computar a quantidade mínima de unidades de tempo para o coelho branco chegar ao destino, se for possível chegar ao destino!

Entrada

A primeira linha da entrada contém três inteiros L, C e K, indicando, respectivamente, o número de linhas, o número de colunas e a quantidade de unidades de tempo na qual o marcador dos relógios está dividido. As L linhas seguintes contêm, cada uma, C inteiros P, representando o estado dos relógios em cada sala: P=-1, se o relógio estiver funcionando corretamente; e 0 ≤ P ≤ K-1, se estiver parado com o ponteiro na posição P. O relógio na sala inicial, primeira linha e primeira coluna, está sempre parado na posição 0.

Saída

Imprima uma única linha contendo um inteiro, representando a quantidade mínima de unidades de tempo para o coelho branco chegar ao destino. Se não for possível, imprima -1.

Restrições

  • 2 ≤ L,C ≤ 100
  • 2 ≤ K ≤ 105
  • -1 ≤ P ≤ K-1

Informações sobre a pontuação

  • Para um conjunto de casos de teste valendo 25 pontos, L ≤ 20, C ≤ 20 e K ≤ 10;

Exemplos

Entrada
3 4 6
0 -1 3 -1
4 1 -1 1
4 -1 2 -1
Saída
8
	

 

Entrada
5 4 10
0 -1 -1 -1
-1 9 9 9
4 9 -1 8
-1 -1 9 7
-1 7 9 -1
Saída
-1
	

 

Entrada
5 4 10
0 -1 -1 -1
-1 9 9 9
4 9 -1 8
-1 2 9 9
-1 7 9 -1
Saída
20
	

 

Tarefas Programação Nível 1
Promoção
logo sbc
Patrocínio
Apoio
Coordenação