Pagini recente » Cod sursa (job #941510) | Cod sursa (job #248017) | Cod sursa (job #2250783) | Cod sursa (job #336551) | Cod sursa (job #482013)
Cod sursa(job #482013)
//#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;
int a[260][260],n;
struct coada{
int x;
int y;
}co[1000000],paz[1000000];
void extmat(int n) {
int i;
for(i=0; i<=n+1; i++) {
a[0][i]=-2;
a[n+1][i]=-2;
}
for(i=0; i<=n+1; i++) {
a[i][0]=-2;
a[i][n+1]=-2;
}
}
int main()
{
int i,j,np=0,inc,sfc;
char cc[260];
freopen("muzeu.in","r",stdin);
ofstream g("muzeu.out");
scanf("%d",&n);
for(i=1; i<=n; i++) {
scanf("%s",cc);
cout<<cc<<'\n';
for(j=0; j<n; j++) {
if(cc[j]=='.') a[i][j+1]=-1;
else if(cc[j]=='P') {
np++;
a[i][j+1]=0;
paz[np].x=i;
paz[np].y=j+1;
}
else a[i][j+1]=-2;
}
}
extmat(n);
/*g<<inc<<" "<<sfc<<endl;
for(i=0; i<=n+1; i++) {
for(j=0; j<=n+1; j++) g<<a[i][j]<<" ";
g<<endl;
}
g<<endl;*/
while(np) {
//cout << np;
inc=0; sfc=1;
co[inc].x=paz[np].x;
co[inc].y=paz[np].y;
while (sfc>inc) {
//x-1,y
if(a[co[inc].x-1][co[inc].y]==-1 || a[co[inc].x-1][co[inc].y]>a[co[inc].x][co[inc].y]+1)
{
a[co[inc].x-1][co[inc].y]=a[co[inc].x][co[inc].y]+1;
co[sfc].x=co[inc].x-1;
co[sfc].y=co[inc].y;
sfc++;
}
//x,y+1
if(a[co[inc].x][co[inc].y+1]==-1 ||a[co[inc].x][co[inc].y+1]>a[co[inc].x][co[inc].y]+1)
{
a[co[inc].x][co[inc].y+1]=a[co[inc].x][co[inc].y]+1;
co[sfc].x=co[inc].x;
co[sfc].y=co[inc].y+1;
sfc++;
}
//x+1,y
if(a[co[inc].x+1][co[inc].y]==-1 || a[co[inc].x+1][co[inc].y]>a[co[inc].x][co[inc].y]+1)
{
a[co[inc].x+1][co[inc].y]=a[co[inc].x][co[inc].y]+1;
co[sfc].x=co[inc].x+1;
co[sfc].y=co[inc].y;
sfc++;
}
//x,y-1
if(a[co[inc].x][co[inc].y-1]==-1 || a[co[inc].x][co[inc].y-1]>a[co[inc].x][co[inc].y]+1)
{
a[co[inc].x][co[inc].y-1]=a[co[inc].x][co[inc].y]+1;
co[sfc].x=co[inc].x;
co[sfc].y=co[inc].y-1;
sfc++;
}
/*g<<inc<<" "<<sfc<<endl;
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++) g<<a[i][j]<<" ";
g<<endl;
}
g<<endl;*/
inc++;
}
np--;
}
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++) g<<a[i][j]<<" ";
g<<'\n';
}
g.close();
return 0;
}