Cod:
#include <fstream>
#define NV 4
#define Nmax 62500
using namespace std;
ifstream fin("muzeu.in");
ofstream fout("muzeu.out");
int a[252][252],n,k,p,u;
struct Pct{int x,y;};
Pct c[Nmax];
int dx[NV] = {-1,0,1,0};
int dy[NV] = {0,1,0,-1};
void citire();
void Lee();
void afisare();
int main()
{
citire();
Lee();
afisare();
return 0;
}
void citire()
{
int i,j;
char sir[252];
fin>>n;
fin.get();
for(i=1; i<=n; i++)
{
fin.getline(sir,252);
for(j=1; j<=n; j++)
{
if(sir[j-1]=='.')
a[i][j]=-1;
else if(sir[j-1]=='#')
a[i][j]=-2;
else
{
a[i][j]=0;
c[u].x=i;
c[u++].y=j;
}
}
}
}
void Lee()
{
Pct B,C;
u--;
int i;
while(p<=u)
{
B.x=c[p].x;
B.y=c[p].y;
p++;
for(i=0; i<NV; i++)
{
C.x=B.x+dx[i];
C.y=B.y+dy[i];
if(a[C.x][C.y]==-1)
{
a[C.x][C.y]=a[B.x][B.y]+1;
u++;
c[u].x=C.x;
c[u].y=C.y;
}
}
}
}
void afisare()
{
int i,j;
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
if(a[i][j]<0)
fout<<a[i][j]<<" ";
else
fout<<" "<<a[i][j]<<" ";
fout<<"\n";
}
}
Editat de moderator: Încearcă să foloseşti tag-ul [code ] [ /code] atunci când vrei să inserezi fragmente din surse.
