Pagini recente » Cod sursa (job #1115266) | Cod sursa (job #1842675) | Cod sursa (job #513648) | Cod sursa (job #914604) | Cod sursa (job #1816351)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX=250,CMAX=66000;
char s[NMAX+5];
int n,v[NMAX+5][NMAX+5],nr=1,dx[]={0,1,0,-1},dy[]={1,0,-1,0};
struct Paznici {
int st,dr;
}c[CMAX+5];
void Citire();
void Coada();
void Bordare();
void Afisare();
int main()
{
Citire();
Bordare();
Coada();
Afisare();
return 0;
}
void Coada() {
int u,p,x,y;
p=1;
u=nr-1;
while(p<=u) {
for(int i=0;i<=3;i++) {
x=c[p].st+dx[i];
y=c[p].dr+dy[i];
if(v[x][y]==0) {
u++;
c[u].st=x;
c[u].dr=y;
v[x][y]=v[c[p].st][c[p].dr]+1;}}
p++;}}
void Bordare() {
for(int i=1;i<=n+1;i++) {
v[0][i]=-1;
v[i][0]=-1;
v[n+1][i]=-1;
v[i][n+1]=-1;}}
void Citire() {
ifstream cin("muzeu.in");
cin>>n;
for(int i=1;i<=n;i++) {
cin>>s;
for(int j=0;j<n;j++) {
if(s[j]=='.')
v[i][j+1]=0;
else if(s[j]=='P') {
c[nr].st=i;
c[nr].dr=j+1;
nr++;
v[i][j+1]=1;}
else if(s[j]=='#')
v[i][j+1]=-1;}}}
void Afisare() {
ofstream cout("muzeu.out");
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
cout<<v[i][j]-1<<" ";}
cout<<"\n";}}