Cod sursa(job #2110111)

Utilizator Gabriela.TpcGabriela Tiperciuc Gabriela.Tpc Data 20 ianuarie 2018 12:28:50
Problema Kdrum Scor 20
Compilator cpp Status done
Runda evaluare_cex_sv_cls_x_2 Marime 1.26 kb
#include <iostream>
#include<fstream>
#include<queue>
using namespace std;
ifstream f("kdrum.in");
ofstream g("kdrum.out");
int map[200][200],N,M,K,map1[200][200];
int di[]={0,1,0,-1};
int dj[]={1,0,-1,0};
int xstart,ystart,xstop,ystop;
void citire()
{int x,y;
f>>N>>M>>K;
f>>xstart>>ystart>>xstop>>ystop;
for(int i=1;i<=N;i++)
    for(int j=1;j<=M;j++)
    {f>>map1[i][j];
    if(map1[i][j]==0)
        map[i][j]=-1;}
}
queue <int > coordx;
queue <int> coordy;
bool okay(int i,int j)
{
    if(i>N or i<1 or j>M or j<1)return false;
    if(map[i][j]==-1)return false;
    return true;
}
void lee()
{int i,j,iurm,jurm;i=xstart;j=ystart;
    map[xstart][ystart]=1;
    coordx.push(xstart);
    coordy.push(ystart);
    while(!coordx.empty() and !coordy.empty())
    {i=coordx.front();
    j=coordy.front();
    coordx.pop();
        coordy.pop();
        for(int directie=0;directie<=3;directie++)
    {
        iurm=i+di[directie];
        jurm=j+dj[directie];
        if(okay(iurm,jurm)==true and map[iurm][jurm]<1)
        {
            map[iurm][jurm]=map[i][j]+1;
            coordx.push(iurm);
            coordy.push(jurm);
        }
    }
}
}
int main()
{
    citire();
   lee();
    g<<map[xstop][ystop]<<endl;
    return 0;
}