Pagini recente » Cod sursa (job #392253) | Cod sursa (job #43000) | Cod sursa (job #2555694) | Cod sursa (job #2337918) | Cod sursa (job #2596637)
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,xj,yj,xr,u,yr,R[102][102],J[102][102];
int dlin[9]={-1, -1, -1, 0, 0, 1, 1, 1};
int dcol[9]={-1, 0, 1, -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,101);
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;}
}
}
}
void 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<8; 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;
}
}
}
}
void LEEJ()
{ COORD s;
int p,i,xn,yn;
p=u=1;
cj[1].x=xj;
cj[1].y=yj;
J[xj][yj]=1;
while(p<=u && !J[xr][yr])
{ s=cj[p++];
for(i=0; i<8; 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]=J[s.x][s.y]+1;
cj[++u].x=xn;
cj[u].y=yn;
}
}
}
}
int main()
{ citire();
int XF,YF,i,j, dmin=2000000;
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;
}