#include <stdio.h>
#include <stdlib.h>
void showMatriz(int **a, int m, int n) {
int i, j;
for (i=0; i<m; i++) {
for (j=0; j<n; j++)
}
}
void markCell(int **a, int i, int j, int v) {
if (!a[i][j]) {
a[i][j] = v;
markCell(a, i+1, j, v+1);
markCell(a, i-1, j, v+1);
markCell(a, i, j+1, v+1);
markCell(a, i, j-1, v+1);
}
}
void longestPath(int m, int n) {
int i, j;
m += 2;
int **matriz
= malloc(m
* sizeof(int *)); n += 2;
for (i=0; i<m; i++) {
matriz
[i
] = malloc(n
* sizeof(int)); for (j=0; j<n; j++) {
if (i && i<m-1 && j && j<n-1)
scanf("%i", &matriz
[i
][j
]); else matriz[i][j] = 1;
}
}
markCell(matriz, 1, 1, 1);
showMatriz(matriz, m, n);
}
int main(void) {
int m, n;
scanf("%i %i\n", &m
, &n
); longestPath(m, n);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnZvaWQgc2hvd01hdHJpeihpbnQgKiphLCBpbnQgbSwgaW50IG4pIHsKCWludCBpLCBqOwoJZm9yIChpPTA7IGk8bTsgaSsrKSB7CgkJZm9yIChqPTA7IGo8bjsgaisrKQoJCQlwcmludGYoIiUzaSAiLCBhW2ldW2pdKTsKCQlwcmludGYoIlxuIik7Cgl9Cn0KCnZvaWQgbWFya0NlbGwoaW50ICoqYSwgaW50IGksIGludCBqLCBpbnQgdikgewoJaWYgKCFhW2ldW2pdKSB7CgkJYVtpXVtqXSA9IHY7CgkJbWFya0NlbGwoYSwgaSsxLCBqLCB2KzEpOwoJCW1hcmtDZWxsKGEsIGktMSwgaiwgdisxKTsKCQltYXJrQ2VsbChhLCBpLCBqKzEsIHYrMSk7CgkJbWFya0NlbGwoYSwgaSwgai0xLCB2KzEpOwoJfQp9Cgp2b2lkIGxvbmdlc3RQYXRoKGludCBtLCBpbnQgbikgewoJaW50IGksIGo7CgltICs9IDI7CglpbnQgKiptYXRyaXogPSBtYWxsb2MobSAqIHNpemVvZihpbnQgKikpOwoJbiArPSAyOwoJZm9yIChpPTA7IGk8bTsgaSsrKSB7CgkJbWF0cml6W2ldID0gbWFsbG9jKG4gKiBzaXplb2YoaW50KSk7CgkJZm9yIChqPTA7IGo8bjsgaisrKSB7CgkJCWlmIChpICYmIGk8bS0xICYmIGogJiYgajxuLTEpCgkJCQlzY2FuZigiJWkiLCAmbWF0cml6W2ldW2pdKTsKCQkJZWxzZSBtYXRyaXpbaV1bal0gPSAxOwoJCX0KCX0KCQoJbWFya0NlbGwobWF0cml6LCAxLCAxLCAxKTsKCQoJc2hvd01hdHJpeihtYXRyaXosIG0sIG4pOwoJZnJlZShtYXRyaXopOwp9CgppbnQgbWFpbih2b2lkKSB7CglpbnQgbSwgbjsKCXNjYW5mKCIlaSAlaVxuIiwgJm0sICZuKTsKCWxvbmdlc3RQYXRoKG0sIG4pOwoJcmV0dXJuIDA7Cn0K