Pagini recente » Cod sursa (job #1075867) | Cod sursa (job #1609206) | Istoria paginii runda/cnrv_1 | Cod sursa (job #1707022) | Cod sursa (job #1011145)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
short int mat[255][255];
short int cx[500*500];
short int cy[500*500];
short const int dx[]={333,0,-1,0,1};
short const int dy[]={333,1,0,-1,0};
short int i,n,j,top=1,na=0,l,ok;
void lee(short int ax[500*255],short int ay[500*255])
{
short int x,y,k;
for(i=1;i<=na;i++)
{
cx[i]=ax[i];
cy[i]=ay[i];
top=i;
}
for(i=1;i<=top;i++)
for(k=1;k<=4;k++)
{ ok=1;
x=cx[i]+dx[k];
y=cy[i]+dy[k];
if(x>0 && y>0 && x<=n && y<=n)
if(mat[x][y]==0)
{for(l=1;l<=na;l++)
if(x==ax[l]&&y==ay[l])
ok=0;
if(ok==1)
{ cx[++top]=x;
cy[top]=y;
mat[x][y]=mat[cx[i]][cy[i]]+1;
}}
}
}
int main()
{
short int ax[500*255], ay[500*255];
char k;
ifstream f("muzeu.in");
ofstream g("muzeu.out");
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
f>>k;
if(k=='#')
mat[i][j]=-2;
if(k=='P')
{
ax[++na]=i;
ay[na]=j;
}
}
lee(ax,ay);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(mat[i][j]==0)
mat[i][j]=-1;
for(i=1;i<=na;i++)
mat[ax[i]][ay[i]]=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
g<<mat[i][j]<<" ";
g<<endl;
}
return 0;
}