Pagini recente » Cod sursa (job #308820) | Cod sursa (job #299639) | Cod sursa (job #46279) | Cod sursa (job #1748011) | Cod sursa (job #3219580)
#include <fstream>
using namespace std;
ifstream cin("kdrum.in");
ofstream cout("kdrum.out");
int n , m , k , matrix[54][54];
int deplasare[54][54];
const int8_t dx[]={1,0,-1,0};
const int8_t dy[]={0,1,0,-1};
struct coada
{
int x;
int y;
}q[2505] ,inceput , sfarsit;
void citire()
{
cin >> n >> m >> k;
cin >> inceput.x >> inceput.y;
cin >> sfarsit.x >> sfarsit.y;
for(int i = 1 ; i <= n ; i++)
for(int j = 1 ; j <= m ; j++)
cin >> matrix[i][j];
}
void bordare()
{
for(int i = 0 ; i <= n + 1 ; i++)
deplasare[i][m+1]=deplasare[i][0]=-1;
for(int j = 0 ; j <= m + 1 ; j++)
deplasare[0][j]=deplasare[n+1][j]=-1;
}
void rezolvare()
{
deplasare[inceput.x][inceput.y]=1;
int x,y;
int st,dr;
st=dr=1;
q[st] = inceput;
while(st<=dr && deplasare[sfarsit.x][sfarsit.y]==0)
{
x = q[st].x;
y = q[st].y;
for(int i = 0 ; i<4 ; i++)
{
if(matrix[x +dx[i]][y + dy[i]]!=0 && deplasare[x +dx[i]][y + dy[i]]==0)
{
deplasare[x +dx[i]][y + dy[i]] = deplasare[x][y]+1;
q[++dr].x = x + dx[i];
q[dr].y = y + dy[i];
}
}
st++;
}
cout << deplasare[sfarsit.x][sfarsit.y];
}
int main()
{
citire();
bordare();
rezolvare();
}