Pagini recente » Cod sursa (job #2173106) | Cod sursa (job #1308297)
#include <iostream>
#include <fstream>
const int MAXN=100;
using namespace std;
char mat[MAXN][MAXN];
ifstream fin("rj.in");
ofstream fout("rj.out");
int dx[] = {-1, 0, 1, 0};
int dy[] = {0, 1, 0, -1};
int main()
{
int N, M;
fin >> N >> M;
for (int i = 0; i < N; ++i) {
fin.getline(mat[i],0);
fin.getline(mat[i],M);
}
int x1, y1, x2, y2;
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
if(mat[i][j]=='R')
{
x1=i;
y1=j;
break;
}
}
}
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
if(mat[i][j]=='J')
{
x2=i;
y2=j;
break;
}
}
}
for(int i=0;i<=N;i++)
{
for(int j=0;j<M;j++)
if(mat[i][j]==' ')
mat[i][j]='0';
}
short cx[MAXN*MAXN];
short cy[MAXN*MAXN];
int px=0, ux=0;
int py=0, uy=0;
mat[x1][y1]=1;
cx[px]=x1;
cy[py]=y1;
while(mat[x2][y2]==0 && ux>=px)
{
int x=cx[px];
int y=cy[py];
px++;
py++;
for(int k = 0; k < 4; ++k) {
int vx = x + dx[k];
int vy = y + dy[k];
if(vx<1 || vy<1 || vx>N || vy>N)
continue;
if(mat[vx][vy]!='0')
continue;
ux++;
uy++;
cx[ux]=vx;
cy[uy]=vy;
mat[vx][vy]=mat[x][y]+1;
}
}
fout<<mat[x2][y2]/2;
return 0;
}