Pagini recente » Cod sursa (job #3270032) | Cod sursa (job #3273404) | Cod sursa (job #2174021) | Cod sursa (job #2880312) | Cod sursa (job #2110111)
#include <iostream>
#include<fstream>
#include<queue>
using namespace std;
ifstream f("kdrum.in");
ofstream g("kdrum.out");
int map[200][200],N,M,K,map1[200][200];
int di[]={0,1,0,-1};
int dj[]={1,0,-1,0};
int xstart,ystart,xstop,ystop;
void citire()
{int x,y;
f>>N>>M>>K;
f>>xstart>>ystart>>xstop>>ystop;
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
{f>>map1[i][j];
if(map1[i][j]==0)
map[i][j]=-1;}
}
queue <int > coordx;
queue <int> coordy;
bool okay(int i,int j)
{
if(i>N or i<1 or j>M or j<1)return false;
if(map[i][j]==-1)return false;
return true;
}
void lee()
{int i,j,iurm,jurm;i=xstart;j=ystart;
map[xstart][ystart]=1;
coordx.push(xstart);
coordy.push(ystart);
while(!coordx.empty() and !coordy.empty())
{i=coordx.front();
j=coordy.front();
coordx.pop();
coordy.pop();
for(int directie=0;directie<=3;directie++)
{
iurm=i+di[directie];
jurm=j+dj[directie];
if(okay(iurm,jurm)==true and map[iurm][jurm]<1)
{
map[iurm][jurm]=map[i][j]+1;
coordx.push(iurm);
coordy.push(jurm);
}
}
}
}
int main()
{
citire();
lee();
g<<map[xstop][ystop]<<endl;
return 0;
}