Pagini recente » Profil Daria09 | Cod sursa (job #205700) | Profil kyrk | Borderou de evaluare (job #1036900) | Cod sursa (job #1586592)
#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;
}
}