Pagini recente » Cod sursa (job #3344946) | Cod sursa (job #3324327) | Cod sursa (job #3348532) | Cod sursa (job #3308779) | Cod sursa (job #3328281)
#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};
map<int, int> M[55][55];
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;
}