Pagini recente » Cod sursa (job #716286) | Cod sursa (job #782102) | Cod sursa (job #544265) | Cod sursa (job #220881) | Cod sursa (job #2112057)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
const int dl[]={-1,0,1,0,-1,-1,1,1};
const int dc[]={0,1,0,-1,-1,1,1,-1};
const int N=100;
char v[N][N];
int r[N][N];
int J[N][N];
struct cord
{
int l;
int c;
};
cord q[N*N];
int main()
{
int n,m,i,j,st=0,dr=-1;
cord rom,jul,x,y;
in>>n>>m;
for(i=1 ; i<=n ; i++)
{
in.getline(1+v[i],m);
for(j=1 ; j<=m ; j++)
{
if(v[i][j]==' ')
{
r[i][j]=-2;
J[i][j]=-2;
}
else if(v[i][j]=='X')
{
r[i][j]=-1;
J[i][j]=-1;
}
else if(v[i][j]=='R')
{
r[i][j]=-3;
J[i][j]=-4;
rom.l=i;
rom.c=j;
}
else if(v[i][j]=='J')
{
r[i][j]=-1;
J[i][j]=-1;
jul.l=i;
jul.c=j;
}
}
}
q[0]=rom;
for(i=1 ; i<=n ; i++)
{
for(j=1 ; j<=m ; j++)
{
out<<v[i][j]<<" ";
}
out<<endl;
}
out<<"\n";
while(st<=dr)
{
x=q[st++];
for(i=0 ; i<8 ; ++i)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if(r[y.l][y.c]==-2)
{
q[++dr]=y;
r[y.l][y.c]=r[x.l][x.c]+1;
}
}
}
return 0;
}