Pagini recente » Cod sursa (job #2340478) | Cod sursa (job #2901090) | Cod sursa (job #877339) | Cod sursa (job #1936742) | Cod sursa (job #2110203)
#include <fstream>
using namespace std;
ifstream in ("kdrum.in");
ofstream out ("kdrum.out");
bool vizitat[52][52];
int n,m,k,xinc,yinc,xsf,ysf,ma[52][52];
int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};
int ind;
int coadax[2505];
int coaday[2505];
int drum[2505];
void bordare()
{
int i;
for(i=0;i<=n+1;i++)
{
vizitat[i][0]=true;
vizitat[i][m+1]=true;
}
for(i=1;i<=m;i++)
{
vizitat[0][i]=true;
vizitat[n+1][i]=true;
}
}
void lee(int x,int y)
{
int i=1,j,xcurent,ycurent;
ind=1;
coadax[ind]=x;
coaday[ind]=y;
drum[ind]=1;
vizitat[x][y]=1;
while(i<=ind)
{
for(j=0;j<4;j++)
{
xcurent=coadax[i]+dx[j];
ycurent=coaday[i]+dy[j];
if(vizitat[xcurent][ycurent]==false)
{
coadax[++ind]=xcurent;
coaday[ind]=ycurent;
vizitat[xcurent][ycurent]=true;
drum[ind]=drum[i]+1;
if(xcurent==xsf and ycurent==ysf)
{
out<<drum[ind];
return;
}
}
}
i++;
}
}
int main()
{
int i,j;
in>>n>>m>>k;
in>>xinc>>yinc>>xsf>>ysf;
bordare();
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
in>>ma[i][j];
lee(xinc,yinc);
return 0;
}