Pagini recente » Cod sursa (job #2463324) | Cod sursa (job #2278735) | Cod sursa (job #937490) | Cod sursa (job #2733732) | Cod sursa (job #2685463)
#include <iostream>
#include <cstdio>
using namespace std;
int ar[107][107],aj[107][107];
int ql[10007],qc[10007];///queue
///N N-E E S-E S S-V V N-V
int dl[8]= {-1,-1,0,+1,+1,+1,0,-1};
int dc[8]= {0,+1,+1,+1,0,-1,-1,-1};
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
int n,m,j,i,prm,ult,rl,rc,jl,jc,l,c,mn=10007,poz1,poz2,ok=0;
char x;
cin>>n>>m;
x=getchar();
for(i=1; i<=n; i++)
{
ok=0;
for(j=1; j<=m; j++)
{
x=getchar();
if(x=='X')
ar[i][j]=aj[i][j]=-1;
else if(x=='R')
{
rl=i;
rc=j;
}
else if(x=='J')
{
jl=i;
jc=j;
}
else if(x=='\n')
{
j=m+1;
ok=1;
}
}
if(ok==0)
x=getchar();
}
prm=1;
ult=1;
ql[1]=rl;
qc[1]=rc;
ar[rl][rc]=1;
while(prm<=ult)
{
l=ql[prm];
c=qc[prm];
for(i=0; i<8; i++)
{
if(l+dl[i]>=1 && l+dl[i]<=n && c+dc[i]>=1 && c+dc[i]<=m && ar[l+dl[i]][c+dc[i]]==0)
{
ql[ult+1]=l+dl[i];
qc[ult+1]=c+dc[i];
ult++;
ar[l+dl[i]][c+dc[i]]=ar[l][c]+1;
}
}
prm++;
}
prm=1;
ult=1;
ql[1]=jl;
qc[1]=jc;
aj[jl][jc]=1;
while(prm<=ult)
{
l=ql[prm];
c=qc[prm];
prm++;
for(i=0; i<8; i++)
{
if(l+dl[i]>=1 && l+dl[i]<=n && c+dc[i]>=1 && c+dc[i]<=m && aj[l+dl[i]][c+dc[i]]==0)
{
ql[ult+1]=l+dl[i];
qc[ult+1]=c+dc[i];
ult++;
aj[l+dl[i]][c+dc[i]]=aj[l][c]+1;
}
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
if(ar[i][j]==aj[i][j] && ar[i][j]<mn && ar[i][j]>0)
{
mn=ar[i][j];
poz1=i;
poz2=j;
}
}
}
cout<<mn<<" "<<poz1<<" "<<poz2;
return 0;
}