Pagini recente » Cod sursa (job #2394238) | Cod sursa (job #3230218) | Cod sursa (job #2515053) | Cod sursa (job #484150) | Cod sursa (job #2108465)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("kdrum.in");
ofstream fout("kdrum.out");
struct elem
{
int k,i,j,stp;
}in,fi,el,el1;
deque <elem> d;
int n,m,k,a[12001][51][51];
const int di[]={-1,0,0,1},dj[]={0,-1,1,0};
int cmmdc(int a,int b)
{
while(b!=0)
{
int c=a%b;
a=b;
b=c;
}
return a;
}
int main()
{
fin>>n>>m>>k;
fin>>in.i>>in.j>>fi.i>>fi.j;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
fin>>a[0][i][j];
in.stp=1;
in.k=k/cmmdc(a[0][in.i][in.j],k);
d.push_back(in);
while(!d.empty())
{
el=d.front();
d.pop_front();
for(int i=0;i<4;i++)
{
if(a[0][el.i+di[i]][el.j+dj[i]]!=0)
{
el1=el;
el1.i+=di[i];
el1.j+=dj[i];
el1.stp++;
el1.k=el.k/cmmdc(el.k,a[0][el1.i][el1.j]);
if(a[el1.k][el1.i][el1.j]==0||a[el1.k][el1.i][el1.j]>el1.stp)
{
a[el1.k][el1.i][el1.j]=el1.stp;
d.push_back(el1);
}
}
}
}
fout<<a[1][fi.i][fi.j];
return 0;
}