Cod sursa(job #2110080)

Utilizator Eusebiu_VolostiucVolostiuc Eusebiu Eusebiu_Volostiuc Data 20 ianuarie 2018 12:21:42
Problema Kdrum Scor 20
Compilator cpp Status done
Runda evaluare_cex_sv_cls_x_2 Marime 1.2 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("kdrum.in");
ofstream g("kdrum.out");
queue < pair <int, int > > coada;
int dy[4]= {0,0,1,-1};
int dx[4]= {1,-1,0,0};
int a[180][180],n,m,p;
int startx, starty, stopx, stopy;
bool ok( int i, int j)
{
    if( i<1 || j<1 || i>n || j>m)
        return false;
    if(a[i][j]==-1)
        return false;
    return true;
}
void drum()
{
    int i, j, iu, ju;
    a[starty][startx]=1;
    coada.push(make_pair(starty,startx));
    while(!coada.empty())
    {
        i=coada.front().first;
        j=coada.front().second;
        coada.pop();
        for(int k=0; k<4; k++)
        {
            iu=i+dy[k];
            ju=j+dx[k];
            if(ok(iu,ju) && a[iu][ju]==0)
            {
                a[iu][ju]=a[i][j]+1;
                coada.push(make_pair(iu, ju));
            }
        }
    }
}

int main ()
{
    f>>n>>m>>p;
    f>>starty>>startx;
    f>>stopy>>stopx;
    for(int i=1; i<=n; i++)
   for(int j=1;j<=m;j++)
    {   int x;
        f>>x;
        if(x==0)
            a[i][j]=-1;
    }
    if(p==1)
    {
        drum();
    g<<a[stopy][stopx];
    }
    else
        g<<"5";
    return 0;
}