Pagini recente » Cod sursa (job #3216604) | Cod sursa (job #97190) | Cod sursa (job #1322826) | Cod sursa (job #2129270) | Cod sursa (job #2033953)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("kdrum.in");
ofstream g("kdrum.out");
int main()
{
int a[53][53];
int n,m,k;
int x1,x2,y1,y2;
f>>n>>m>>k;
f>>x1>>y1>>x2>>y2;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
f>>a[i][j];
for(int i=0;i<=n+1;i++)
{
a[i][0]=0;
a[i][m+1]=0;
}
for(int i=0;i<=m+1;i++)
{
a[0][i]=0;
a[n+1][i]=0;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]!=0)a[i][j]=300;
int coad[1000],ci,cj;
ci=0;cj=1;
coad[ci]=x1;coad[cj]=y1;
a[x1][y1]=1;
ci=ci+2;cj=cj+2;
int ri=0,rj=1;
do
{
int i=coad[ri-2],j=coad[rj-2];
ri=ri+2;rj=rj+2;
if(a[i-1][j]!=0&&a[i][j]+1<a[i-1][j])
{
a[i-1][j]=a[i][j]+1;
coad[ci]=i-1;coad[cj]=j;
ci=ci+2;cj=cj+2;
}
if(a[i+1][j]!=0&&a[i][j]+1<a[i+1][j])
{
a[i+1][j]=a[i][j]+1;
coad[ci]=i+1;coad[cj]=j;
ci=ci+2;cj=cj+2;
}
if(a[i][j-1]!=0&&a[i][j]+1<a[i][j-1])
{
a[i][j-1]=a[i][j]+1;
coad[ci]=i;coad[cj]=j-1;
ci=ci+2;cj=cj+2;
}
if(a[i][j+1]!=0&&a[i][j]+1<a[i][j+1])
{
a[i][j+1]=a[i][j]+1;
coad[ci]=i;coad[cj]=j+1;
ci=ci+2;cj=cj+2;
}
}
while(a[x2][y2]==300);
g<<a[x2][y2];
return 0;
}