Pagini recente » Cod sursa (job #3348532) | Cod sursa (job #3308779) | Cod sursa (job #3328281) | Cod sursa (job #3328258) | Cod sursa (job #3328274)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("kdrum.in");
ofstream fout("kdrum.out");
int x[52][52],di[]={-1,0,0,1},dj[]={0,-1,1,0};
int M[52][52][2501];
queue<int> qi,qj,qv;
int n,m,k,a,b,c,d,ok,v1;
int main()
{fin>>n>>m>>k>>a>>b>>c>>d;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{fin>>x[i][j];}
qi.push(a);
qj.push(b);
qv.push(x[a][b]);
M[a][b][x[a][b]] = 1;
while(!qi.empty()&&!ok)
{int i = qi.front();
qi.pop();
int j = qj.front();
qj.pop();
int v = qv.front();
qv.pop();
for(int g=0; g<4; g++)
{int iv=i+di[g],jv=j+dj[g];
if(iv>0&&jv>0&&iv<=n&&jv<=m&&x[iv][jv]!=0)
{v1 = __gcd(k, v * x[iv][jv]);
if(M[iv][jv][v1]==0)
{M[iv][jv][v1]=M[i][j][v] + 1;
if(iv==c && jv==d && v1==k)ok=1;
qi.push(iv);
qj.push(jv);
qv.push(v1);
}
}
}
}
fout<<M[c][d][k];
return 0;
}