Cod sursa(job #2110212)

Utilizator andonis1616Cuzenco Andrei Robert andonis1616 Data 20 ianuarie 2018 13:03:49
Problema Kdrum Scor 0
Compilator cpp Status done
Runda evaluare_cex_sv_cls_x_2 Marime 1.46 kb
#include <fstream>

using namespace std;
ifstream in ("kdrum.in");
ofstream out ("kdrum.out");

bool vizitat[52][52];
int n,m,k,xinc,yinc,xsf,ysf,ma[52][52];

int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};

int ind;
int coadax[2505];
int coaday[2505];
int drum[2505];

void bordare()
{
    int i;
    for(i=0;i<=n+1;i++)
    {
        vizitat[i][0]=true;
        vizitat[i][m+1]=true;
    }
    for(i=0;i<=m+1;i++)
    {
        vizitat[0][i]=true;
        vizitat[n+1][i]=true;
    }
}

void lee(int x,int y)
{
    int i=1,j,xcurent,ycurent;
    ind=1;
    coadax[ind]=x;
    coaday[ind]=y;
    drum[ind]=1;
    vizitat[x][y]=true;
    while(i<=ind)
    {
        for(j=0;j<4;j++)
        {
            xcurent=coadax[i]+dx[j];
            ycurent=coaday[i]+dy[j];
            if(vizitat[xcurent][ycurent]==false)
                {
                    coadax[++ind]=xcurent;
                    coaday[ind]=ycurent;
                    vizitat[xcurent][ycurent]=true;
                    drum[ind]=drum[i]+1;
                    if(xcurent==xsf and ycurent==ysf)
                    {
                        out<<drum[ind];
                        return;
                    }
                }
        }
        i++;
    }
}

int main()
{
    int i,j;
    in>>n>>m>>k;
    in>>xinc>>yinc>>xsf>>ysf;
    bordare();
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            in>>ma[i][j];
    lee(xinc,yinc);
    return 0;
}