Pagini recente » Cod sursa (job #558107) | Cod sursa (job #582873) | Cod sursa (job #410886) | Cod sursa (job #2391910) | Cod sursa (job #2652395)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("kdrum.in");
ofstream fout("kdrum.out");
struct elem {
int k, i, j, stp;
} in, fi, el, el1;
queue<elem> d;
int n, m, k, a[12001][51][51];
const int dx[]={-1, 0, 0, 1},
dy[]={0, -1, 1, 0};
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 / __gcd(a[0][in.i][in.j], k);
d.push(in);
while(!d.empty()) {
el = d.front();
d.pop();
for(int i = 0; i < 4 ; ++i) {
if(a[0][el.i + dx[i]][el.j + dy[i]]) {
el1 = el;
el1.i += dx[i];
el1.j += dy[i];
el1.stp++;
el1.k = el.k / __gcd(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(el1);
}
}
}
}
fout << a[1][fi.i][fi.j];
return 0;
}