Pagini recente » Cod sursa (job #940408) | Cod sursa (job #76575) | Cod sursa (job #1012424) | Cod sursa (job #1941586) | Cod sursa (job #254390)
Cod sursa(job #254390)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define MAXN 64
#define MARE 2000000000
long dl[5] = {-1, 0, 1, 0};
long dc[5] = {0, 1, 0, -1};
long n, m, k, x1, y1, x2, y2, s1[4096], s2[4096], o, i, j;
long a[MAXN][MAXN], v[MAXN][MAXN];
void init() {
for (long i = 1; i <= 50; ++i) {
for (long j = 1; j <= 50; ++j) {
v[i][j] = MARE;
}
}
}
long lee() {
for (long i = 1; i <= o; ++i) {
for (long j = 0; j <= 3; ++j) {
if (a[s1[i] + dl[j]][s2[i] + dc[j]] != 0) {
if (v[s1[i] + dl[j]][s2[i] + dc[j]] > v[s1[i]][s2[i]] + 1) {
v[s1[i] + dl[j]][s2[i] + dc[j]] = v[s1[i]][s2[i]] + 1;
++o;
s1[o] = s1[i] + dl[j];
s2[o] = s2[i] + dc[j];
}
}
}
}
return v[x2][y2];
}
int main() {
freopen("kdrum.in", "r", stdin);
freopen("kdrum.out", "w", stdout);
scanf("%ld %ld %ld", &n, &m, &k);
scanf("%ld %ld %ld %ld", &x1, &y1, &x2, &y2);
for (i = 1; i <= n; ++i) {
for (j = 1; j <= m; ++j) {
scanf("%ld", &a[i][j]);
}
}
s1[1] = x1;s2[1] = y1;o = 1;
init();
v[x1][y1] = 1;
printf("%ld\n", lee());
return 0;
}