Pagini recente » Cod sursa (job #3289267) | Cod sursa (job #1646055) | Cod sursa (job #2355526) | Autentificare | Cod sursa (job #3240644)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("kdrum.in");
ofstream fout("kdrum.out");
int x[55][55], di[]={-1, 0, 0, 1}, dj[]={0, -1, 1, 0};
map<int, int> M[55][55];
struct Data{
int i, j, v;
};
int main()
{ int n, m, k, a, b, c, d, ok=0, v1;
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];
queue<Data> q;
q.push({a, b, x[a][b]});
M[a][b][x[a][b]]=1;
while(q.empty()!=1 && !ok)
{int i=q.front().i, j=q.front().j, v=q.front().v;
for(int g=0;g<4;g++)
{int iv=i+di[g], jv=j+dj[g];
v1=__gcd(k, v*x[iv][jv]);
if(iv>0 && jv>0 && iv<=n && jv<=m && x[iv][jv]!=0 && M[iv][jv][v1]==0)
{M[iv][jv][v1]=M[i][j][v]+1;
if(i==c && j==d && v1==k)ok=1;
q.push({iv, jv, v1});
}
}
q.pop();
}
fout<<M[c][d][k];
return 0;
}