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