Pagini recente » Cod sursa (job #2685101) | Cod sursa (job #2926720) | Cod sursa (job #1432194) | Cod sursa (job #3218497) | Cod sursa (job #2191394)
#include <fstream>
using namespace std;
ifstream f("padure.in");
ofstream g("padure.out");
int N,M,p1,pc,c1,cc,a[1001][1001],d[1001][1001];
int X[]={0,-1,0,1},Y[]={-1,0,1,0},p=1,l=1;;
struct nod{int x,y;}C[1000001];
void nod(int q,int r,int val) //Facem nodul
{
d[q][r]=val;
if(q==c1&&r==cc)
g<<d[q][r]-104;
else
for(int i=0;i<=3;i++)
if(a[q+X[i]][r+Y[i]]==a[q][r]&&d[q+X[i]][r+Y[i]]<104&&q+X[i]>=1&&q+X[i]<=N&&r+Y[i]>=1&&r+Y[i]<=M)
{l++;
C[l].x=q+X[i];
C[l].y=r+Y[i];
nod(q+X[i],r+Y[i],val);
}
}
int main()
{ f>>N>>M>>p1>>pc>>c1>>cc;
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
f>>a[i][j];
C[1].x=p1;
C[1].y=pc;
d[p1][pc]=104;
p=1;l=1;
nod(p1,pc,104);
while(p<=l)
{
for(int i=0;i<=3;i++)
if(a[C[p].x+X[i]][C[p].y+Y[i]]!=a[C[p].x][C[p].y]&&d[C[p].x+X[i]][C[p].y+Y[i]]<104&&C[p].x+X[i]>=1&&C[p].x+X[i]<=N&&C[p].y+Y[i]>=1&&C[p].y+Y[i]<=M)
{l++;
C[l].x=C[p].x+X[i];
C[l].y=C[p].y+Y[i];
nod(C[p].x+X[i],C[p].y+Y[i],d[C[p].x][C[p].y]+1);
}
p++;
}
return 0;
}