Pagini recente » Cod sursa (job #2747129) | Cod sursa (job #2512864) | Cod sursa (job #306788) | Cod sursa (job #1714879) | Cod sursa (job #2102496)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,k,i,j,d,irom,jrom,ijul,jjul,ic,jc,icu,jcu,st,dr,minim,iaf,jaf,a[103][103],b[103][103],c[3][11022];
char ci[102];
int di[]={-1,-1,-1,0,0,1,1,1};
int dj[]={-1,0,1,-1,1,-1,0,1};
int main ()
{
fin >> n >> m;
for(i=0;i<=n;i++)
{
fin.getline(ci,101);
k=strlen(ci);
for(j=0;j<k;j++)
{
if(ci[j]=='R')
{
irom=i;
jrom=j+1;
}
if(ci[j]=='J')
{
ijul=i;
jjul=j+1;
}
if(ci[j]=='X') a[i][j+1]=b[i][j+1]=-1;
}
}
c[0][1]=irom;
c[1][1]=jrom;
a[irom][jrom]=1;
st=1;
dr=1;
while(st<=dr)
{
ic=c[0][st];
jc=c[1][st];
for(d=0;d<=7;d++)
{
icu=ic+di[d];
jcu=jc+dj[d];
if(icu>=1 && jcu>=1 && icu<=n && jcu<=m && a[icu][jcu]==0)
{
dr++;
c[0][dr]=icu;
c[1][dr]=jcu;
a[icu][jcu]=1+a[ic][jc];
}
}
st++;
}
c[0][1]=ijul;
c[1][1]=jjul;
st=1;
dr=1;
b[ijul][jjul]=1;
while(st<=dr)
{
ic=c[0][st];
jc=c[1][st];
for(d=0;d<=7;d++)
{
icu=ic+di[d];
jcu=jc+dj[d];
if(icu>=1 && jcu>=1 && icu<=n && jcu<=m && b[icu][jcu]==0)
{
dr++;
c[0][dr]=icu;
c[1][dr]=jcu;
b[icu][jcu]=1+b[ic][jc];
}
}
st++;
}
minim=2000000001;
for(i=1;i<=n;i++) for(j=1;j<=m;j++)
{
if(a[i][j]==b[i][j] && b[i][j]>0)
{
if(b[i][j]<minim)
{
minim=a[i][j];
iaf=i;
jaf=j;
}
}
}
fout << minim << " " << iaf << " " << jaf;
return 0;
}