Cod sursa(job #1582658)

Utilizator ThEKVitel Silviu-Constantin ThEK Data 28 ianuarie 2016 11:08:28
Problema Amlei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
using namespace std;

ifstream fin("alee.in");
ofstream fout("alee.out");
struct coada
{
    int l,c;
}C[30976],ps,pf;

int a[176][176], n, m;
int dl[]={-1, 0, 1, 0};
int dc[]={0, 1, 0, -1};

void citire()
{
    int m,x,y,i;
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        a[x][y]=-1;
    }
    fin>>ps.l>>ps.c>>pf.l>>pf.c;
}

void bordare()
{
    int i;
    for(i=1;i<=n;i++) a[0][i]=a[i][0]=a[i][n+1]=a[n+1][i]=-1;
}

void LEE()
{
    int p,u,i;
    coada v,z;
    p=u=0;
    a[ps.l][ps.c]=1;
    C[0]=ps;
    while(p<=u && a[pf.l][pf.c]==0)
    {
       v=C[p];
       p++;
       for(i=1;i<=4;i++)
       {
           z.l=v.l+dl[i];
           z.c=v.c+dc[i];
           if(a[z.l][z.c]==0)
           {
               a[z.l][z.c]=a[v.l][v.c]+1;
               u++;
               C[u]=z;
           }
       }
    }
}

int main()
{
    citire();
    bordare();
    LEE();
    fout<<a[pf.l][pf.c];
    return 0;
}