Pagini recente » Cod sursa (job #3129122) | Cod sursa (job #680815) | Cod sursa (job #1849909) | Cod sursa (job #1689790) | Cod sursa (job #1631660)
#include <fstream>
#include <queue>
#define MAX 51
using namespace std;
int N, M, K;
int startx, starty, stopx, stopy;
int Map[MAX][MAX];
int Aux[MAX][MAX];
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};
queue < pair <int, int> > coada;
void Citire()
{
ifstream fin("kdrum.in");
fin >> N >> M >> K;
fin >> startx >> starty >> stopx >> stopy;
for(int i = 1; i <= N; i++)
{
for(int j=1; j<=M; j++)
{
fin >> Map[i][j];
if(Map[i][j] == 0) Map[i][j] = -1;
}
}
}
bool OK(int i, int j)
{
if(i < 1 || i > N || j < 1 || j > M) return false;
else if(Map[i][j] == -1) return false;
return true;
}
void Lee()
{
int i, j, i_urmator, j_urmator;
coada.push(make_pair(startx, starty));
Aux[startx][starty] = 1;
while(!coada.empty())
{
i = coada.front().first;
j = coada.front().second;
coada.pop();
for(int dir=0; dir<4; dir++)
{
i_urmator = i + dx[dir];
j_urmator = j + dy[dir];
if(OK(i_urmator, j_urmator) && Aux[i_urmator][j_urmator] < 1)
{
Aux[i_urmator][j_urmator] = Aux[i][j] + 1;
coada.push(make_pair(i_urmator, j_urmator));
}
}
}
}
int main()
{
ofstream fout("kdrum.out");
Citire(); Lee();
fout << Aux[stopx][stopy];
return 0;
}