Pagini recente » Cod sursa (job #2732229) | Cod sursa (job #960660) | Cod sursa (job #2688679) | Cod sursa (job #2718214) | Cod sursa (job #2675384)
#include <fstream>
using namespace std;
ifstream cin ("rj.in");
ofstream cout ("rj.out");
int ar[110][110],aj[110][110],dirL[8]={-1,-1,0,1,1,1,0,-1},dirC[8]={0,1,1,1,0,-1,-1,-1};
struct ura
{
int l,c;
};
ura coada[10010];
int main()
{
int n,m,i,j,lr,cr,lj,cj,tmin,lmin,cmin,lin,col,inc,sf,pp;
char ch;
cin>>n>>m;
cin.get(ch);
for (i=1; i<=n; i++)
{
pp=0;
for (j=1; j<=m && pp==0; j++)
{
cin.get(ch);
if (ch=='X')
{
ar[i][j]=-1;
aj[i][j]=-1;
}
if (ch=='R')
{
lr=i;
cr=j;
}
if (ch=='J')
{
lj=i;
cj=j;
}
if (ch=='\n')
pp=1;
}
if (pp==0)
cin.get(ch);
}
for (i=0; i<=n+1; i++)
ar[i][0]=ar[i][m+1]=aj[i][0]=aj[i][m+1]=-1;
for (j=0; j<=m+1; j++)
ar[0][j]=ar[n+1][j]=aj[0][j]=aj[n+1][j]=-1;
///lee romeo
inc=sf=1;
ar[lr][cr]=1;
coada[1].l=lr;
coada[1].c=cr;
while (inc<=sf)
{
for (i=0; i<=7; i++)
{
lin=coada[inc].l+dirL[i];
col=coada[inc].c+dirC[i];
if (ar[lin][col]==0)
{
sf++;
coada[sf].l=lin;
coada[sf].c=col;
ar[lin][col]=ar[coada[inc].l][coada[inc].c]+1;
}
}
inc++;
}
///lee julieta
inc=sf=1;
aj[lj][cj]=1;
coada[1].l=lj;
coada[1].c=cj;
while (inc<=sf)
{
for (i=0; i<=7; i++)
{
lin=coada[inc].l+dirL[i];
col=coada[inc].c+dirC[i];
if (aj[lin][col]==0)
{
sf++;
coada[sf].l=lin;
coada[sf].c=col;
aj[lin][col]=aj[coada[inc].l][coada[inc].c]+1;
}
}
inc++;
}
tmin=10010;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
if (ar[i][j]==aj[i][j] && ar[i][j]>0)
if (ar[i][j]<tmin)
{
tmin=ar[i][j];
lmin=i;
cmin=j;
}
cout<<tmin<<" "<<lmin<<" "<<cmin;
return 0;
}