Pagini recente » Cod sursa (job #268395) | Cod sursa (job #2063833) | Cod sursa (job #528261) | Cod sursa (job #2815149) | Cod sursa (job #2337620)
#include<fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int a[200][200],b[200][200],n,m,i,j,c[11000],d[11000],q,z,l,inR,sfR,inJ,sfJ,xmin,ymin,tmin;
int x[]={-1,-1,0,1,1,1,0,-1};
int y[]={0,1,1,1,0,-1,-1,-1};
int main()
{
char ch;
fin>>n>>m;
fin.get();
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
fin.get(ch);
if(ch=='R')
{
inR=i;
sfR=j;
}
else if(ch=='J')
{
inJ=i;
sfJ=j;
}
else
if(ch==' ')
a[i][j]=b[i][j]=0;
else
if(ch=='X')
a[i][j]=b[i][j]=-1;
}
fin.get();
}
for(i=0;i<=n+1;i++)
{
a[0][i]=-1;
a[n+1][i]=-1;
a[i][0]=-1;
a[i][n+1]=-1;
b[0][i]=-1;
b[n+1][i]=-1;
b[i][0]=-1;
b[i][n+1]=-1;
}
l=1;
c[l]=inR;
d[l]=sfR;
i=1;
a[inJ][sfJ]=0;
a[inR][sfR]=1;
while(a[inJ][sfJ]==0&&i<=l)
{
q=c[i];
z=d[i];
for(j=0;j<=7;j++)
if(a[q+x[j]][z+y[j]]==0)
{
l++;
c[l]=q+x[j];
d[l]=z+y[j];
a[q+x[j]][z+y[j]]=a[q][z]+1;
}
i++;
}
l=1;
c[l]=inJ;
d[l]=sfJ;
i=1;
b[inJ][sfJ]=1;
b[inR][sfR]=0;
while(b[inR][sfR]==0&&i<=l)
{
q=c[i];
z=d[i];
for(j=0;j<=7;j++)
if(b[q+x[j]][z+y[j]]==0)
{
l++;
c[l]=q+x[j];
d[l]=z+y[j];
b[q+x[j]][z+y[j]]=b[q][z]+1;
}
i++;
}
tmin=101*101;
xmin=ymin=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j] && a[i][j]<tmin && a[i][j]>0)
{
tmin=a[i][j];
xmin=i;
ymin=j;
}
fout<<tmin<<" "<<xmin<<" "<<ymin;
return 0;
}