Pagini recente » Cod sursa (job #2029986) | Cod sursa (job #1607185) | Cod sursa (job #3287937) | Cod sursa (job #2138369) | Cod sursa (job #1023457)
#include <fstream>
using namespace std;
ifstream fin ("rj.in");
ofstream fout ("rj.out");
char x[101][101];
int i,j,ir,jr,ij,jj,n,m,iv,jv,ic,jc,p,u,minim,imin,jmin,ok,d;
int di[]={-1,-1,-1, 0, 0, 1, 1, 1};
int dj[]={-1, 0, 1,-1, 1,-1, 0, 1};
int ro[101][101],ju[101][101], c[3][10001];
int main () {
fin>>n>>m;
fin.get(x[0][0]);
for(i=1;i<=n;i++)
{
fin.getline(x[i]+1,m+5);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(x[i][j]=='R')
{
ir=i;
jr=j;
ro[i][j]=1;
}
else if(x[i][j]=='J')
{
ij=i;
jj=j;
ju[i][j]=1;
}
else if(x[i][j]=='X')
{
ro[i][j]=ju[i][j]=-1;
}
else
x[i][j]=' ';
}
x[i][m+1]=0;
}
p=u=1;
c[0][1]=ir;
c[1][1]=jr;
while (p<=u) {
ic=c[0][p];
jc=c[1][p];
for (d=0;d<=7;d++) {
iv=ic+di[d];
jv=jc+dj[d];
if (iv>=1&&iv<=n&&jv>=1&&jv<=m&&ro[iv][jv]==0) {
u++;
c[0][u]=iv;
c[1][u]=jv;
ro[iv][jv]=ro[ic][jc]+1;
}
}
p++;
}
p=u=1;
c[0][1]=ij;
c[1][1]=jj;
while (p<=u) {
ic=c[0][p];
jc=c[1][p];
for (d=0;d<=7;d++) {
iv=ic+di[d];
jv=jc+dj[d];
if (iv>=1&&iv<=n&&jv>=1&&jv<=m&&ju[iv][jv]==0) {
u++;
c[0][u]=iv;
c[1][u]=jv;
ju[iv][jv]=ju[ic][jc]+1;
}
}
p++;
}
minim = n*m +10;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (ro[i][j]==ju[i][j]&&ro[i][j]>0)
if (ro[i][j]<minim){
minim=ro[i][j];
imin=i;
jmin=j;
}
fout << minim<<" "<< imin <<" "<<jmin<<"\n";
return 0;
}