Pagini recente » Cod sursa (job #2830826) | Cod sursa (job #676456) | Cod sursa (job #1092877) | Cod sursa (job #232320) | Cod sursa (job #1656955)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int a[120][120],b[120][120],i,j,n,m,ir,p,jr,ij,jj,u,x,ver,Min,imin,jmin;
char v[110],c;
int dil[9]={0,1,0,-1,0,1,1,-1,-1};
int dic[9]={0,0,1,0,-1,1,-1,1,-1};
struct elem
{
int l,c;
}co[10010],de;
int main()
{
fin>>n>>m;
fin.getline(v,110);
for(i=1;i<=n;i++)
{
fin.getline(v,110);
for(j=0;j<strlen(v);j++)
{
c=v[j];
if(c=='X')
a[i][j+1]=-1;
else
a[i][j+1]=0;
if(c=='R')
{
ir=i;
jr=j+1;
}
if(c=='J')
{
ij=i;
jj=j+1;
}
}
}
for(i=0;i<=m+1;i++)
{
a[0][i]=-1;
a[n+1][i]=-1;
}
for(i=0;i<=n+1;i++)
{
a[i][0]=-1;
a[i][m+1]=-1;
}
a[ir][jr]=1;
p=0;
u=1;
co[1].l=ir;
co[1].c=jr;
ver=0;
while(p<=u && ver!=1)
{
p++;
for(i=1;i<=8;i++)
{
de.l=dil[i]+co[p].l;
de.c=dic[i]+co[p].c;
if(a[de.l][de.c]==0)
{
a[de.l][de.c]=a[co[p].l][co[p].c]+1;
u++;
co[u]=de;
if(de.l==ij && de.c==jj)
{
ver=1;
break;
}
}
}
}
b[ij][jj]=1;
p=0;
u=1;
co[1].l=ij;
co[1].c=jj;
ver=0;
while(p<=u && ver!=1)
{
p++;
for(i=1;i<=8;i++)
{
de.l=dil[i]+co[p].l;
de.c=dic[i]+co[p].c;
if(b[de.l][de.c]==0 && a[de.l][de.c]!=-1)
{
b[de.l][de.c]=b[co[p].l][co[p].c]+1;
u++;
co[u]=de;
if(de.l==ir && de.c==jr)
{
ver=1;
break;
}
}
}
}
Min=2000000000;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j])
if(Min>a[i][j] && a[i][j]>0)
{
Min=a[i][j];
imin=i;
jmin=j;
}
}
fout<<Min<<" "<<imin<<" "<<jmin;
return 0;
}