Cod sursa(job #943932)

Utilizator predatorGigi Valoare predator Data 26 aprilie 2013 19:53:01
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream>
#include<queue>
#define NM 260
using namespace std;
ifstream f("muzeu.in");
ofstream g("muzeu.out");
int dx[]={0,0,0,1,-1};
int dy[]={0,1,-1,0,0};
queue<int> qx,qy;
char m[NM][NM];
int e[NM][NM],i,j,n,xc,yc;
int main ()
{
	f>>n;
	for(i=1;i<=n;++i)
		for(j=1;j<=n;++j)
		{
			f>>m[i][j];
			if(m[i][j]=='P')
				qx.push(i),qy.push(j);
		}
	while(!qx.empty())
	{
		for(i=1;i<=4;++i)
		{
			xc=qx.front()+dx[i];
			yc=qy.front()+dy[i];
			if(xc<1||yc<1||xc>n||yc>n||e[xc][yc])
				continue;
			if(m[xc][yc]=='.')
			{
				e[xc][yc]=e[qx.front()][qy.front()]+1;
				qx.push(xc),qy.push(yc);
			}
		}
		qx.pop(),qy.pop();
	}
	for(i=1;i<=n;++i)
	{
		for(j=1;j<=n;++j)
		{
			if(e[i][j]==0)
			{
				if(m[i][j]=='#')
					e[i][j]=-2;
				if(m[i][j]=='.')
					e[i][j]=-1;
			}
			g<<e[i][j]<<" ";
		}
		g<<"\n";
	}
	return 0;
}