Pagini recente » Cod sursa (job #781565) | Cod sursa (job #1556718) | Cod sursa (job #2755870) | Cod sursa (job #1597522) | Cod sursa (job #3328272)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("");
ofstream fout("");
int 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;
}