Cod sursa(job #1586592)

Utilizator RazvanatorHilea Razvan Razvanator Data 1 februarie 2016 14:02:42
Problema Barbar Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 kb
#include <fstream>
#include <iostream>
#include <string.h>
#include <queue>

using namespace std;

ifstream fin("barbar.in");
ofstream fout("barbar.out");

struct coord
{
    int x,y;
}a;

int m,n,mat[1002][1002];
int di[4]={0,0,-1,1};
int dj[4]={-1,1,0,0};

queue <coord> coada;

void Read()
{
    fin>>m>>n;
    char c;
    for (int i=0;i<=m+1;i++)
        for (int j=0;j<=n+1;j++)
        {
            if (i==0 || j==0 || i==m+1 || j==n+1) mat[i][j]=-5;
            else
            {
                fin>>c;
                if (c=='D') {
                    mat[i][j]=-3;
                    a.x=i;
                    a.y=j;
                    coada.push(a);
                }
                else if (c=='O') mat[i][j]=-1;
                    else if (c=='*') mat[i][j]=-2;
            }
        }
}

void Lee()
{
    int i,j,i_urm,j_urm;
    while (!coada.empty())
    {
        i=coada.front().x;
        j=coada.front().y;
        if (mat[i][j]==-3) mat[i][j]=0;
        for (int x=0;x<4;x++)
        {
            i_urm=i+di[x];
            j_urm=j+dj[x];
            if (mat[i_urm][j_urm]==0 && i_urm>0 && j_urm>0 && i_urm<m+1 && j_urm<n+1)
            {
                mat[i_urm][j_urm]=mat[i][j]+1;
                a.x=i_urm;
                a.y=j_urm;
                coada.push(a);
            }
        }
        coada.pop();
    }
}

int cautare_binara()
{
    int k=1<<10;
return 0;
}

int main()
{
    Read();
    Lee();
    for (int i=0;i<=m+1;i++)
    {
        for (int j=0;j<=n+1;j++)
        {
            cout<<mat[i][j]<<" ";
        }
        cout<<endl;
    }
}