Pagini recente » Cod sursa (job #3340150) | Cod sursa (job #3337384) | Cod sursa (job #3315067) | Cod sursa (job #3315534) | Cod sursa (job #3328285)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("kdrum.in");
ofstream fout("kdrum.out");
int x[55][55];
int di[]={-1,0,0,1},dj[]={0,-1,1,0},i1,iv,jv;
int n,m,x1,x2,z1,z2,ok,v1,k,i,j,v;
map<int, int> M[55][55];
struct p{
int i,j,v;
};
int main()
{
fin >> n >> m >> k >> x1 >> z1 >> x2 >> z2;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
fin >> x[i][j];
queue <p> q;
q.push({x1,z1,x[x1][z1]});
M[x1][z1][x[x1][z1]]=1;
while(!q.empty() && !ok)
{
i=q.front().i,j=q.front().j,v=q.front().v;
for(i1=0 ; i1<4 ; i1++)
{
iv=i+di[i1];
jv=j+dj[i1];
v1=__gcd(k,v*x[iv][jv]);
if( M[iv][jv][v1]==0 && x[iv][jv]!=0 && iv<=n && jv<=m && iv>=1 && jv>=1)
{
M[iv][jv][v1]=M[i][j][v]+1;
if(i==x2 && j==z2 && v1==k)
ok=1;
q.push({iv,jv,v1});
}
}
q.pop();
}
fout << M[x2][z2][k];
return 0;
}