Pagini recente » Cod sursa (job #1288087) | Cod sursa (job #2318019) | Cod sursa (job #1170007) | Cod sursa (job #2836444) | Cod sursa (job #2244759)
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,xj,yj,xr,u,yr,R[101][101],J[101][101];
int dlin[9]={0, 1, 1, 1, 0, -1, -1, -1 };
int dcol[9]={1, 1, 0, -1, -1, -1, 0, 1};
typedef struct {int x,y;}COORD;
COORD cr[10001],cj[10001];
void citire()
{int j,i;
char l[101];
fin>>n>>m;
fin.getline(l,100);
for(i=0; i<n; i++)
{fin.getline(l,100);
for(j=0; j<m; j++)
{if(l[j] == 'X')
{R[i][j]=J[i][j] = -1; }
if(l[j] == 'J')
{xj=i;
yj=j;
}
if(l[j] == 'R')
{xr=i;
yr=j;
}}
}
}
int LEER( )
{ COORD s;
int p,i,xn,yn;
p=u=1;
cr[1].x=xr;
cr[1].y=yr;
R[xr][yr]=1;
while(p<=u && !R[xj][yj])
{s=cr[p++];
for(i=0; i<9; i++)
{ xn=s.x+dlin[i];
yn=s.y+dcol[i];
if(!R[xn][yn] && xn<n && xn>=0 && yn<m && yn>=0)
{
R[xn][yn]=1+R[s.x][s.y];
cr[++u].x=xn;
cr[u].y=yn;
}
}
}
return R[xj][yj];
}
int LEEJ()
{ COORD s;
int p,i,xn,yn;
p=u=1;
cj[1].x=xj;
cj[1].y=yj;
J[xr][yr]=1;
while(p<=u && !J[xr][yr])
{s=cj[p++];
for(i=0; i<9; i++)
{ xn=s.x+dlin[i];
yn=s.y+dcol[i];
if(!J[xn][yn] && xn<n && xn>=0 && yn<m && yn>=0)
{
J[xn][yn]=1+J[s.x][s.y];
cj[++u].x=xn;
cj[u].y=yn;
}
}
}
return J[xr][yr];
}
int main()
{citire();
int XF,YF,i,j, dmin=10002;
LEER();
LEEJ();
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{if(R[i][j]>0 && R[i][j] == J[i][j] && R[i][j]<dmin)
{dmin=R[i][j];
XF=i;
YF=j;
}
}
fout<<dmin<<' '<<XF+1<<' '<<YF+1;
return 0;
}