Pagini recente » Cod sursa (job #317872) | Cod sursa (job #1582041) | Cod sursa (job #854534) | Cod sursa (job #414469) | Cod sursa (job #2287165)
#include <fstream>
#include <queue>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int n,m,a[2][101][101],r=10001,rx,ry,jx,jy;
char c;
int di[]={-1,-1,-1,0,0,1,1,1};
int dj[]={-1,0,1,-1,1,-1,0,1};
queue < pair < int,int > > q;
void lee(int x,int y,int p)
{ a[p][x][y]=1;
q.push(make_pair(x,y));
while(!q.empty())
{ x=q.front().first;
y=q.front().second;
q.pop();
for(int d=0;d<8;d++)
{ if(!a[p][x+di[d]][y+dj[d]] && 0<x+di[d] && 0<y+dj[d] && x+di[d]<=n && y+dj[d]<=m)
a[p][x+di[d]][y+dj[d]]=a[p][x][y]+1,q.push(make_pair(x+di[d],y+dj[d]));
}
}
}
int main()
{ in>>n>>m;
for(int i=1;i<=n;i++)
{ in.get();
for(int j=1;j<=m;j++)
{ in.get(c);
if(c=='X')
a[0][i][j]=-1,a[1][i][j]=-1;
else if(c=='R')
rx=i,ry=j;
else if(c=='J')
jx=i,jy=j;
}
}
lee(rx,ry,0);
lee(jx,jy,1);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[0][i][j]==a[1][i][j] && r>a[0][i][j] && a[0][i][j]>0)
r=a[0][i][j],rx=i,ry=j;
out<<r<<" "<<rx<<" "<<ry;
in.close();
out.close();
return 0;
}