Pagini recente » Cod sursa (job #2215808) | Cod sursa (job #3171468) | Cod sursa (job #1986141) | Cod sursa (job #2610109) | Cod sursa (job #922328)
Cod sursa(job #922328)
#include <cstdio>
#include <string.h>
using namespace std;
long a[105][105],b[105][105];
long n,m,i,y,lj,cj,lr,cr,mini,lp,cp;
char x;
char s[105];
void leer(long l, long c)
{
long s=0,d=0,aa[10001]={0},bb[10001]={0};
a[l][c]=1;
aa[1]=l;
bb[1]=c;
s=1;
d=1;
while (s<=d)
{
i=aa[s];
y=bb[s];
if (a[i-1][y]==0)
{
d++;
aa[d]=i-1;
bb[d]=y;
a[i-1][y]=a[i][y]+1;
}
if (a[i-1][y-1]==0)
{
d++;
aa[d]=i-1;
bb[d]=y-1;
a[i-1][y-1]=a[i][y]+1;
}
if (a[i][y-1]==0)
{
d++;
aa[d]=i;
bb[d]=y-1;
a[i][y-1]=a[i][y]+1;
}
if (a[i-1][y+1]==0)
{
d++;
aa[d]=i-1;
bb[d]=y+1;
a[i-1][y+1]=a[i][y]+1;
}
if (a[i+1][y-1]==0)
{
d++;
aa[d]=i+1;
bb[d]=y-1;
a[i+1][y-1]=a[i][y]+1;
}
if (a[i+1][y]==0)
{
d++;
aa[d]=i+1;
bb[d]=y;
a[i+1][y]=a[i][y]+1;
}
if (a[i][y+1]==0)
{
d++;
aa[d]=i;
bb[d]=y+1;
a[i][y+1]=a[i][y]+1;
}
if (a[i+1][y+1]==0)
{
d++;
aa[d]=i+1;
bb[d]=y+1;
a[i+1][y+1]=a[i][y]+1;
}
s++;
}
}
void leej(long l, long c)
{
long s=0,d=0,aa[10001]={0},bb[10001]={0};
b[l][c]=1;
aa[1]=l;
bb[1]=c;
s=1;
d=1;
while (s<=d)
{
i=aa[s];
y=bb[s];
if (b[i-1][y]==0)
{
d++;
aa[d]=i-1;
bb[d]=y;
b[i-1][y]=b[i][y]+1;
}
if (b[i-1][y-1]==0)
{
d++;
aa[d]=i-1;
bb[d]=y-1;
b[i-1][y-1]=b[i][y]+1;
}
if (b[i][y-1]==0)
{
d++;
aa[d]=i;
bb[d]=y-1;
b[i][y-1]=b[i][y]+1;
}
if (b[i-1][y+1]==0)
{
d++;
aa[d]=i-1;
bb[d]=y+1;
b[i-1][y+1]=b[i][y]+1;
}
if (b[i+1][y-1]==0)
{
d++;
aa[d]=i+1;
bb[d]=y-1;
b[i+1][y-1]=b[i][y]+1;
}
if (b[i+1][y]==0)
{
d++;
aa[d]=i+1;
bb[d]=y;
b[i+1][y]=b[i][y]+1;
}
if (b[i][y+1]==0)
{
d++;
aa[d]=i;
bb[d]=y+1;
b[i][y+1]=b[i][y]+1;
}
if (b[i+1][y+1]==0)
{
d++;
aa[d]=i+1;
bb[d]=y+1;
b[i+1][y+1]=b[i][y]+1;
}
s++;
}
}
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%ld%ld\n",&n,&m);
for (i=0; i<=n+1; i++)
{
a[i][0]=-5;
a[i][m+1]=-5;
b[i][0]=-5;
b[i][m+1]=-5;
}
for (i=1; i<=m+1; i++)
{
a[0][i]=-5;
a[n+1][i]=-5;
b[0][i]=-5;
b[n+1][i]=-5;
}
for (i=1; i<=n; i++)
{
gets(s);
for (y=1; y<=strlen(s); y++)
{
x=s[y-1];
if (x=='J')
{
lj=i; cj=y;
a[i][y]=-2;
b[i][y]=-2;
}
if (x=='R')
{
lr=i; cr=y;
a[i][y]=-3;
b[i][y]=-3;
}
if (x=='X')
{
b[i][y]=-1;
a[i][y]=-1;
}
}
}
//for (i=1; i<=n; i++)
// {
// for (y=1; y<=m; y++)
// printf("%d ",a[i][y]);
// printf("\n");
// }
leer(lr,cr);
leej(lj,cj);
mini=m*n;
for (i=1; i<=n; i++)
for (y=1; y<=m; y++)
if ((a[i][y]==b[i][y])&&(a[i][y]>0))
if (a[i][y]<mini)
{
lp=i;
cp=y;
mini=a[i][y];
}
printf("%ld %ld %ld",mini,lp,cp);
return 0;
}