Pagini recente » Cod sursa (job #411190) | Cod sursa (job #740357) | Cod sursa (job #3220213) | Cod sursa (job #2573954) | Cod sursa (job #504351)
Cod sursa(job #504351)
#include<cstdio>
const int N=1<<8;
int a[N][N];
char b[N][N];
int dlin[]={0,1,0,-1};
int dcol[]={-1,0,1,0};
struct punct
{
int lin,col;
};
punct q[N*N];
int main()
{
freopen("muzeu.in","r",stdin);
freopen("muzeu.out","w",stdout);
int n,i,j,u,p,c,xn,yn;
scanf("%d\n",&n);
for(i=0;i<=n+1;i++)
{
b[0][i]=-2;
b[n+1][i]=-2;
b[i][0]=-2;
b[i][n+1]=-2;
}
u=0;
p=1;
for(i=1;i<=n;i++)
gets(&b[i][1]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(b[i][j]=='P')
{
a[i][j]=0;
q[++u].lin=i;
q[u].col=j;
}
else if (b[i][j]=='#') a[i][j]=-2;
else a[i][j]=-1;
}
while( p<=u)
{
for(c=0;c<=3;c++)
{
xn=q[p].lin+dlin[c];
yn=q[p].col+dcol[c];
if( a[xn][yn]!=-2 && a[xn][yn]!=0 && ( a[xn][yn]==-1 || a[q[p].lin][q[p].col]+1 < a[xn][yn]) )
{
a[xn][yn]=a[q[p].lin][q[p].col]+1;
q[++u].lin=xn;
q[u].col=yn;
}
}
p++;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}