Cod sursa(job #614997)

Utilizator AlexandruSolotAlexandru Solot AlexandruSolot Data 8 octombrie 2011 12:07:36
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <stdio.h>

short int Map[176][176], N, M, pi1, pi2, pj1, pj2, X, Y;
short int Qi[175 * 175 + 1],
    Qj[175 * 175 + 1], pq, uq,
    di[8]={-1, 0,  1,  0},
    dj[8]={0, -1,  0,  1};

using namespace std;

int main()
{
    int i, j;
    freopen("alee.in", "r", stdin);
    freopen("alee.out", "w", stdout);
    cin>>N>>M;

    for(i=1; i<=M; i++)
        {
           cin>>X>>Y;
           Map[X][Y]=-1;
        }
    cin>>pi1>>pj1>>pi2>>pj2;
    Map[pi1][pj1]=1;
    Qi[pq]=pi1;
    Qj[pq]=pj1;
    while (pq<=uq)
        {
         X=Qi[pq];
         Y=Qj[pq];
         pq++;

         for(i=0; i<4; i++)
            if(Map[X+di[i]][Y+dj[i]]==0 && X+di[i]>0 && Y+dj[i]>0 && X+di[i]<=N && Y+dj[i]<=N)
                {
                    Map[X+di[i]][Y+dj[i]]=Map[X][Y]+1;
                    uq++;
                    Qi[uq]=X+di[i];
                    Qj[uq]=Y+dj[i];
                }

        }

    cout<<Map[pi2][pj2];



    return 0;
}