Pagini recente » Cod sursa (job #1869960) | Cod sursa (job #1893138) | Cod sursa (job #140574) | Cod sursa (job #2643335) | Cod sursa (job #2110030)
#include <bits/stdc++.h>
using namespace std;
ifstream f("kdrum.in");
ofstream g("kdrum.out");
int n,m,k,xi,yi,xf,yf;
int a[52][52];
int diri[]={-1,0,1,0};
int dirj[]={0,1,0,-1};
int ver(int i,int j){
return (i>0&&i<=n&&j>0&&j<=m);
}
int cmmdc(int a,int b){
if(b==0)return a;
return cmmdc(b,a%b);
}
int lee(){
deque<int> di,dj,dval,dist;
di.push_back(xi);
dj.push_back(yi);
dval.push_back(1);
dist.push_back(1);
while(!di.empty()){
int ii=di.front();
int jj=dj.front();
int vv=dval.front();
int dd=dist.front();
if(ii==xf&&jj==yf&&vv==k)return dd;
di.pop_front();
dj.pop_front();
dval.pop_front();
dist.pop_front();
for(int dir=0;dir<=3;dir++){
int ni=ii+diri[dir],nj=jj+dirj[dir];
if(ver(ni,nj)){if(cmmdc((k/vv),a[ni][nj])>1){
di.push_front(ni);
dj.push_front(nj);
dval.push_front(vv*cmmdc(k/vv,a[ni][nj]));
dist.push_back(dd+1);
}else
{
di.push_back(ni);
dj.push_back(nj);
dval.push_back(vv);
dist.push_back(dd+1);
}
}
}
}
}
void citire(){
f>>n>>m>>k>>xi>>yi>>xf>>yf;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){
int x;
f>>x;
if(x==0)a[i][j]=-1;
else {
a[i][j]=cmmdc(k,x);
}
}
}
int main(){
citire();
g<<lee()+1;
return 0;
}