206 afișări Moldovan Alexandru Bogdan (AlexMoldovan) 02 oct www.pbinfo.ro
Etichete: nicio etichetă

@{c++}#include <fstream>
#include <queue> // coada din stl
using namespace std;
ifstream fin(“roboti.in”);
ofstream fout(“roboti.out”);
const int di[] = {-1, 0, 1, 0}; /// vectorul directie pt i
const int dj[] = {0, 1, 0, -1}; /// vectorul directie pt j
struct pozitie {int i, j;};
int A10051005;
int B10051005;
int n, m, i1, j1, i2, j2;
queue<pozitie> Q;
/// verifica sa nu iesim din matrice
int inside(int i, int j)
{ return i >= 1 && i <= n && j >= 1 && j <= m;
}
void LEE
{ B[i][j] = 1; /// marchez in B pozitia de pornire Q.push({i, j}); /// adaug in Q pozitia while(!Q.empty()) /// cat timp mai sunt pozitii in Q { /// luam pozitia din fata cozii i = Q.front().i; j = Q.front().j; Q.pop(); /// elimina elementul din fata cozii for(int d = 0; d < 4; d++) { int iv = i + di[d], jv = j + dj[d]; /// calculeaza coordonatele vecinului if(inside(iv, jv) && A[iv][jv]==0 && B[iv][jv] == 0) { /// daca pozitia este accesibila si nu am mai trecut pe acolo B[iv][jv] = B[i][j]+1; /// cu un pas in plus Q.push({iv, jv}); /// adauga in Q pozitia noua } } }
}
int main()
{ fin >> n >> m;

for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) fin >> A[i][j]; fin >> i1 >> j1 >> i2 >> j2; LEE; if(B[i2][j2] == 0) fout << -1; else fout << B[i2][j2]-1; return 0; }@

206 afișări Moldovan Alexandru Bogdan (AlexMoldovan) 02 oct www.pbinfo.ro