Pagini recente » Cod sursa (job #754250) | Cod sursa (job #154126) | Cod sursa (job #980567) | Cod sursa (job #371016) | Cod sursa (job #342635)
Cod sursa(job #342635)
#include<fstream>
#define dmax 52
using namespace std;
ifstream in("kdrum.in");
ofstream out("kdrum.out");
int mat[dmax][dmax],n,m,q,x1,y1,x2,y2;
const int dx[]={99,0,1,0,-1};
const int dy[]={99,-1,0,1,0};
struct queue
{ int x;
int y;
int pas;
long cst;
int rx;
int ry;
} c[dmax*dmax];
int bune(int i,int j)
{ return ((i>0)&&(i<=n)&&(j>0)&&(j<=m));
}
void lee()
{ int p1=1,p2=1,k,ii,jj;
c[p1].x=x1;
c[p1].y=y1;
c[p1].pas=1;
c[p1].cst=mat[x1][y1];
c[p1].rx=-1;
c[p1].ry=-1;
while(p1<=p2)
{ for(k=1;k<=4;k++)
{ ii=c[p1].x+dx[k];
jj=c[p1].y+dy[k];
if(bune(ii,jj))
{ if((ii!=c[p1].rx)&&(jj!=c[p1].ry))
{ p2++;
c[p2].x=ii;
c[p2].y=jj;
c[p2].pas=c[p1].pas+1;
c[p2].cst=c[p1].cst*mat[ii][jj];
c[p2].rx=c[p1].x;
c[p2].ry=c[p1].y;
if((ii==x2)&&(jj==y2)&&(c[p2].cst%q==0))
{ out<<c[p2].pas;
return;
}
}
}
}
p1++;
}
}
int main()
{ int i,j;
in>>n>>m>>q;
in>>x1>>y1>>x2>>y2;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
in>>mat[i][j];
in.close();
lee();
out.close();
return 0;
}