Pagini recente » Cod sursa (job #2378666) | Cod sursa (job #953641) | Cod sursa (job #1815716) | Cod sursa (job #2204266) | Cod sursa (job #2112160)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
const int dl[]= {-1,0,1,0,-1,-1,1,1};
const int dc[]= {0,1,0,-1,-1,1,1,-1};
const int N=102;
char v[N][N];
int r[N][N];
int J[N][N];
struct cord
{
int l;
int c;
};
cord q[N*N];
int main()
{
int n,m,i,j,st=0,dr=-1,min1=10000000,c1,c2;
cord rom,jul,x,y;
in>>n>>m>>ws;
for(i=1 ; i<=n ; i++)
{
in.getline(1+v[i],N);
for(j=1 ; j<=m ; j++)
{
if(v[i][j]==' ')
{
r[i][j]=-2;
J[i][j]=-2;
}
else if(v[i][j]=='X')
{
r[i][j]=-1;
J[i][j]=-1;
}
else if(v[i][j]=='R')
{
r[i][j]=0;
J[i][j]=-3;
rom.l=i;
rom.c=j;
}
else if(v[i][j]=='J')
{
r[i][j]=-4;
J[i][j]=0;
jul.l=i;
jul.c=j;
}
}
}
q[++dr]=rom;
while(st<=dr)
{
x=q[st++];
for(i=0 ; i<8 ; ++i)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if(r[y.l][y.c]==-2)
{
q[++dr]=y;
r[y.l][y.c]=r[x.l][x.c]+1;
}
}
}
st=0;
dr=-1;
q[++dr]=jul;
while(st<=dr)
{
x=q[st++];
for(i=0 ; i<8 ; ++i)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if(J[y.l][y.c]==-2)
{
q[++dr]=y;
J[y.l][y.c]=J[x.l][x.c]+1;
}
}
}
for(i=1 ; i<=n ; i++)
{
for(j=1 ; j<=m ; j++)
{
if(r[i][j]==J[i][j] && r[i][j]>0)
{
if(r[i][j]<min1)
{
min1=r[i][j];
c1=i;
c2=j;
}
}
}
}
out<<min1+1<<" "<<c1<<" "<<c2;
return 0;
}