Pagini recente » Cod sursa (job #2665625) | Cod sursa (job #903677) | Cod sursa (job #2671167) | Cod sursa (job #1803986) | Cod sursa (job #1348932)
#include <fstream>
#include <string>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
char a[101][101];
int ro[101][101],ju[101][101];
short dx[]= {0,-1,-1,-1,0,1,1,1}, dy[]= {-1,-1,0,1,1,1,0,-1};
short n,m,ir,jr,ij,jj;
void cit()
{
f>>n>>m;
f.get();
int i,j;
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
f.get(a[i][j]);
if(a[i][j]=='X')
{
ro[i][j]=-1;
ju[i][j]=-1;
}
else if(a[i][j]=='R')
{
ro[i][j]=-2;
ju[i][j]=-2;
ir=i;
jr=j;
}
else if(a[i][j]=='J')
{
ro[i][j]=-3;
ju[i][j]=-3;
ij=i;
jj=j;
}
}
f.get();
}
f.close();
}
void drumuriro()
{
int p=1,u=1,c,l;
short k;
struct poz
{
int x,y;
} d[10001];
d[p].x=ir;
d[p].y=jr;
ro[ir][jr]=1;
while(p<=u)
{
for(k=0; k<8; k++)
{
l=d[p].x+dx[k];
c=d[p].y+dy[k];
if(ro[l][c]==0&&l>0&&l<n+1&&c>0&&c<m+1)
{
u++;
d[u].x=l;
d[u].y=c;
ro[l][c]=ro[d[p].x][d[p].y]+1;
}
}
p++;
}
}
void drumuriju()
{
int p=1,u=1,c,l;
short k;
struct poz
{
int x,y;
} d[10001];
d[p].x=ij;
d[p].y=jj;
ju[ij][jj]=1;
while(p<=u)
{
for(k=0; k<8; k++)
{
l=d[p].x+dx[k];
c=d[p].y+dy[k];
if(ju[l][c]==0&&l>0&&l<n+1&&c>0&&c<m+1)
{
u++;
d[u].x=l;
d[u].y=c;
ju[l][c]=ju[d[p].x][d[p].y]+1;
}
}
p++;
}
}
void tmin()
{
int i,j,tmin=32767,x,y;
for(i=1; i<=n ; i++)
for(j=1; j<=m; j++)
if(ro[i][j]>0&&ro[i][j]==ju[i][j]) if(tmin>ro[i][j])
{
tmin=ro[i][j];
x=i;
y=j;
}
g<<tmin<<" "<<x<<" "<<y;
}
void afis()
{
int i,j;
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
g<<ju[i][j]<<" ";
g<<'\n';
}
}
int main()
{
cit();
drumuriro();
drumuriju();
tmin();
return 0;
}