Pagini recente » Cod sursa (job #671467) | Cod sursa (job #2736487) | Cod sursa (job #995688) | Cod sursa (job #1303077) | Cod sursa (job #2009821)
#include <fstream>
#include <queue>
#define VAL 55
#define MOD 12005
using namespace std;
ifstream fin("kdrum.in");
ofstream fout("kdrum.out");
const int dl[4]={-1, 0, 1, 0};
const int dc[4]={0, -1, 0, 1};
struct pozitie
{
int l, c;
};
pozitie poz, poz2;
int N, M, K, i, j, k;
int l1, l2, c1, c2;
int v[VAL][VAL], d;
int dp[VAL][VAL];
queue <pozitie> Q;
void Lee()
{
poz.l=l1;
poz.c=c1;
dp[poz.l][poz.c]=1;
Q.push(poz);
while (Q.empty()==false)
{
poz=Q.front();
Q.pop();
for (d=0; d<4; d++)
{
poz2.l=poz.l+dl[d];
poz2.c=poz.c+dc[d];
if (dp[poz2.l][poz2.c]>dp[poz.l][poz.c]+1)
{
dp[poz2.l][poz2.c]=dp[poz.l][poz.c]+1;
Q.push(poz2);
}
}
}
}
int main()
{
fin >> N >> M >> K;
fin >> l1 >> c1 >> l2 >> c2;
for (i=1; i<=N; i++)
{
for (j=1; j<=M; j++)
{
fin >> v[i][j];
dp[i][j]=MOD;
}
}
for (i=0; i<=N+1; i++)
dp[i][0]=dp[i][M+1]=-1;
for (j=0; j<=M+1; j++)
dp[0][j]=dp[N+1][j]=-1;
Lee();
fout << dp[l2][c2] << '\n';
fin.close();
fout.close();
return 0;
}