Pagini recente » Cod sursa (job #1298940) | Arhiva de probleme | Cod sursa (job #145787) | Cod sursa (job #590809) | Cod sursa (job #285856)
Cod sursa(job #285856)
#include<stdio.h>
#define DIM 101
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
struct coada
{
int x,y;
};
coada c[DIM*40];
int n,m,ir,jr,ij,jj,a[DIM][DIM],b[DIM][DIM];
char ch;
void read ()
{
int i,j;
scanf("%d%d\n",&n,&m);
for(i=1;i<=n;++i)
{
for(j=1;j<=m;++j)
{
scanf("%c",&ch);
if(ch=='R')
{
ir=i;
jr=j;
a[i][j]=1;
}
if(ch=='J')
{
ij=i;
jj=j;
b[i][j]=1;
}
if(ch=='X')
a[i][j]=b[i][j]=-1;
}
scanf("\n");
}
for(i=0;i<=n+1;++i)
a[i][0]=a[i][m+1]=b[i][0]=b[i][m+1]=-1;
for(i=0;i<=m+1;++i)
a[0][i]=a[n+1][i]=b[0][i]=b[n+1][i]=-1;
}
void lee1 ()
{
int in,sf,i;
in=sf=1;
c[in%40].x=ir;
c[in%40].y=jr;
while(in<=sf)
{
for(i=0;i<4;++i)
if(a[c[in%40].x+dx[i]][c[in%40].y+dy[i]]==0)
{
a[c[in%40].x+dx[i]][c[in%40].y+dy[i]]=a[c[in%40].x][c[in%40].y]+1;
++sf;
c[sf%40].x=c[in%40].x+dx[i];
c[sf%40].y=c[in%40].y+dy[i];
}
++in;
}
}
void lee2 ()
{
int in,sf,i;
in=sf=1;
c[in%40].x=ij;
c[in%40].y=jj;
while(in<=sf)
{
for(i=0;i<4;++i)
if(b[c[in%40].x+dx[i]][c[in%40].y+dy[i]]==0)
{
b[c[in%40].x+dx[i]][c[in%40].y+dy[i]]=b[c[in%40].x][c[in%40].y]+1;
++sf;
c[sf%40].x=c[in%40].x+dx[i];
c[sf%40].y=c[in%40].y+dy[i];
}
++in;
}
}
int end ()
{
int i,j;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
if(a[i][j]==b[i][j] && a[i][j]!=-1 && a[i][j]!=0)
{
printf("%d %d %d",a[i][j]-1,i,j);
return 0;
}
}
int main ()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
read ();
lee1 ();
lee2 ();
end ();
return 0;
}