Pagini recente » Cod sursa (job #2849722) | Cod sursa (job #8988) | Cod sursa (job #2953012) | Cod sursa (job #1913577) | Cod sursa (job #679809)
Cod sursa(job #679809)
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int a[105][105];
int n,m,xi,yi,xf,yf;
char s[200];
int u=1, p=0;
int di[8]={0,1,1,1,0,-1,-1,-1};
int dj[8]={1,1,0,-1,-1,-1,0,1};
struct coada{
int i;
int j;
}c[105*105];
/*void citire()
{
fin>>n>>m;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
{
fin>>s;
//if (s=='X')
// a[i][j]=-1;
if (s=='R')
{
xi=i;
yi=j;
}
if (s=='J')
{
xf=i;
yf=j;
}
}
}*/
void bordare()
{
for (int i=0;i<=n+1;i++){
a[i][0]=1;
a[i][m+1]=1;
}
for (int j=0;j<=m+1;j++){
a[0][j]=1;
a[n+1][j]=1;
}
}
int lee()
{
c[p].i=xi;
c[p].j=yi;
a[xi][yi]=1;
while (p<u)
{
int il=c[p].i;
int jl=c[p].j;
for (int k=0;k<4;k++)
{
int i2=il+di[k];
int j2=jl+dj[k];
if (a[i2][j2]==0)
{
c[u].i=i2;
c[u].j=j2;
a[i2][j2]=a[il][jl]+1;
if ((i2==xf) && (j2==yf))
return a[il][jl]+1;
u++;
}
}
p++;
}
return -1;
}
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d%d\n",&n,&m);
for (int i=0;i<n;i++)
{
gets(s);
for (int j=0;j<m;j++)
{
if (s[j]=='X')
a[i][j]=-1;
else
a[i][j]=0;
if (s[j]=='R'){
xi=i;
yi=j;}
if (s[j]=='J'){
xf=i;
yf=j;}
}
}
//citire();
bordare();
int pas=lee();
pas=(pas+1)/2;
fout<<pas;
fout<<" "<<c[pas*2].i<<" "<<c[pas].j+1;
return 0;
}