Pagini recente » Cod sursa (job #1281047) | Cod sursa (job #521420) | Cod sursa (job #1025207) | Cod sursa (job #206406) | Cod sursa (job #1900830)
#include<cstdio>
using namespace std;
int n,m,j,lr,cr,lj,cj;
int a[105][105],b[105][105],coada[10000][2],minim=100005,imin,jmin;
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d%d",&n,&m);
scanf("\n");
for (int i=1;i<=n;i++)
{
// memset(s,0,105);
j=0;
char c='1';
while (c!='\n')
{
scanf("%c",&c);
if (c!='\n')
{
j++;
if (c=='X') a[i][j]=-1;
else
if (c=='R')
{
lr=i;
cr=j;
}
else
if (c=='J')
{
lj=i;
cj=j;
}
else
a[i][j]=-2;
}
}
}
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
// printf("%d ",a[i][j]);
b[i][j]=a[i][j];
// printf("\n");
}
// printf("%d %d",lj,cj);
for (int i=0;i<=m+1;i++)
{
a[0][i]=-1;
b[0][i]=-1;
a[n+1][i]=-1;
b[n+1][i]=-1;
}
for (int i=0;i<=n+1;i++)
{
a[i][0]=-1;
b[i][0]=-1;
a[i][m+1]=-1;
b[i][m+1]=-1;
}
int dmin=1,dmax=2;
coada[dmin][1]=lr;
coada[dmin][2]=cr;
a[lr][cr]=1;
/* for (int i=0;i<=n+1;i++)
{
for (int j=0;j<=m+1;j++)
printf("%d ",a[i][j]);
printf("\n");
}*/
while (dmin<dmax)
{
if (a[coada[dmin][1]-1][coada[dmin][2]]==-2)
{
coada[dmax][1]=coada[dmin][1]-1;
coada[dmax][2]=coada[dmin][2];
a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
if (a[coada[dmin][1]+1][coada[dmin][2]]==-2)
{
coada[dmax][1]=coada[dmin][1]+1;
coada[dmax][2]=coada[dmin][2];
a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
if (a[coada[dmin][1]][coada[dmin][2]-1]==-2)
{
coada[dmax][1]=coada[dmin][1];
coada[dmax][2]=coada[dmin][2]-1;
a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
if (a[coada[dmin][1]][coada[dmin][2]+1]==-2)
{
coada[dmax][1]=coada[dmin][1];
coada[dmax][2]=coada[dmin][2]+1;
a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
//
if (a[coada[dmin][1]-1][coada[dmin][2]-1]==-2)
{
coada[dmax][1]=coada[dmin][1]-1;
coada[dmax][2]=coada[dmin][2]-1;
a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
if (a[coada[dmin][1]-1][coada[dmin][2]+1]==-2)
{
coada[dmax][1]=coada[dmin][1]-1;
coada[dmax][2]=coada[dmin][2]+1;
a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
if (a[coada[dmin][1]+1][coada[dmin][2]-1]==-2)
{
coada[dmax][1]=coada[dmin][1]+1;
coada[dmax][2]=coada[dmin][2]-1;
a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
if (a[coada[dmin][1]+1][coada[dmin][2]+1]==-2)
{
coada[dmax][1]=coada[dmin][1]+1;
coada[dmax][2]=coada[dmin][2]+1;
a[coada[dmax][1]][coada[dmax][2]]=a[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
//
dmin++;
}
//////
dmin=1,dmax=2;
coada[dmin][1]=lj;
coada[dmin][2]=cj;
b[lj][cj]=1;
while (dmin<dmax)
{
if (b[coada[dmin][1]-1][coada[dmin][2]]==-2)
{
coada[dmax][1]=coada[dmin][1]-1;
coada[dmax][2]=coada[dmin][2];
b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
if (b[coada[dmin][1]+1][coada[dmin][2]]==-2)
{
coada[dmax][1]=coada[dmin][1]+1;
coada[dmax][2]=coada[dmin][2];
b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
if (b[coada[dmin][1]][coada[dmin][2]-1]==-2)
{
coada[dmax][1]=coada[dmin][1];
coada[dmax][2]=coada[dmin][2]-1;
b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
if (b[coada[dmin][1]][coada[dmin][2]+1]==-2)
{
coada[dmax][1]=coada[dmin][1];
coada[dmax][2]=coada[dmin][2]+1;
b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
//
if (b[coada[dmin][1]-1][coada[dmin][2]-1]==-2)
{
coada[dmax][1]=coada[dmin][1]-1;
coada[dmax][2]=coada[dmin][2]-1;
b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
if (b[coada[dmin][1]-1][coada[dmin][2]+1]==-2)
{
coada[dmax][1]=coada[dmin][1]-1;
coada[dmax][2]=coada[dmin][2]+1;
b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
if (b[coada[dmin][1]+1][coada[dmin][2]-1]==-2)
{
coada[dmax][1]=coada[dmin][1]+1;
coada[dmax][2]=coada[dmin][2]-1;
b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
if (b[coada[dmin][1]+1][coada[dmin][2]+1]==-2)
{
coada[dmax][1]=coada[dmin][1]+1;
coada[dmax][2]=coada[dmin][2]+1;
b[coada[dmax][1]][coada[dmax][2]]=b[coada[dmin][1]][coada[dmin][2]]+1;
dmax++;
}
//
dmin++;
}
////
a[lr][cr]=-1;
b[lj][cj]=-1;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
if (a[i][j]==b[i][j] && a[i][j]>0)
{
if (a[i][j]<minim) minim=a[i][j],imin=i,jmin=j;
}
}
printf("%d %d %d\n",minim,imin,jmin);
return 0;
}